2011-03-28 4 views
3

사용자가 이미지 파일을 업로드하게하는 간단한 Visualforce 페이지를 작성한 후 파일을 ContentVersion 개체에 저장합니다.Salesforce - ContentVersion의 이미지 파일을 사용자 정의 Visualforce 페이지에 표시 할 수 있습니까?

지금 사용자 지정 Visualforce 페이지에 저장된 이미지를 표시하고 싶습니다. 심지어 가능합니까? <apex:image>과 같은 모양은 사용할 수 없습니다. 또한 <img href="{!cv.contentVersion}"...>에는 행운이 없었습니다.

실제 문제는 이미지 파일을 성공적으로 업로드했는데 URL은 무엇입니까? Google 외부에서 임의의 URL로 테스트했는데 이미지를 표시 할 수 있습니다 (예 : /../..some.jpg "). 그러나 업로드 된 이미지 파일의 절대 URL은 무엇인지 알 수 없습니다. contentversion

참고 :. 이것은 내 사용자들은 종종 자신의 사용자 이미지를 변경하려면 이미지를 업로드 할 수 있습니다 정적 자원없는

코드

public with sharing class ImageUploadTestController { 

    public blob file { get; set; } 
    public String imageFilePath { get; set; } 

    public ContentVersion cv { get; set; } 

    public ImageUploadTestController() { 
     cv = [select id, versionData, title, pathOnClient FROM ContentVersion limit 1]; 
    } 

    //fill out the inputFile field and press go. This will upload file to the server 
    public PageReference go() { 
     ContentVersion v = new ContentVersion(); 
     v.versionData = file; 
     v.title = 'some title'; 
     v.pathOnClient ='/foo.jpeg'; 
     insert v; 

     return new PageReference('/' + v.id); 
    } 

    //v.id sample 
    //069A00000009Ux3 

}//end class 

없이 VisualForce 페이지

0123.
<apex:page controller="ImageUploadTestController"> 
    <apex:form > 
    <apex:inputFile value="{!file}" /> 

    <apex:commandbutton action="{!go}" value="go"/> 
    </apex:form> 

    <!-- none of below works!! :(--> 
    <a href="/{!cv.id}">{!cv.title} {!cv.pathOnClient}</a> 
    <a href="https://na7.salesforce.com/069A00000009FG4"></a> 
    <apex:image value="/069A00000009Ux3" width="220" height="55"/> 

</apex:page> 

답변

3

을보십시오.

내가 한 다른 옵션은 참조 할 수있는 정적 리소스에 내 이미지가 포함 된 zip 파일을 업로드하는 것입니다.

+0

예, 문서 객체에 저장하면됩니다. 단지 단점은 응용 프로그램입니다 다음 문서 테이블에 동료가 시도한만큼의 레코드가있는 경우 패키지 할 수 없습니다. 우리가 쉽게 할 수 있으면 좋겠다 .. –

1

현재 ScottW 제공하는 형식은 문서 작동 I 콘텐츠에서 서비스를 제공하기 위해 가능한 믿을 수 없어 <apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>

+0

그것은 내가 아래의 코드를 넣어 작동하지 아니하고 VP 페이지에 표시되지 않습니다 <정점 : 이미지 값 = "/ servlet/servlet.FileDownload? file = 068A00000009w2QIAQ"/>
또한 시도해 보았습니다.

+0

나는 대신 문서 객체를 사용해야 만 포장 단계에서 데이터를 가질 수는 없지만 아마도 유일한 방법은 ... :( –

+0

위의 URL을 가지고 있다면 apex : image를 사용하는 대신 이미지를 표시하기 위해 일반 HTML img 태그를 사용할 수 있습니다. –

2

이 작동합니다 : 내 경험을 바탕으로

public PageReference getContent(){ 
    String html = ApexPages.currentPage().getParameters().get('html'); 
    PageReference redirection = null; 
    redirection = new PageReference('/sfc/servlet.shepherd/version/download/' + contentVersion.Id); 
    redirection.setRedirect(true); 
    return redirection; 
} 
1

, "thegogz는"올 -이 내용에서 직접 이미지를 렌더링하실 수 없습니다. 다른 사람이 지적했듯이 문서 및/또는 정적 리소스에서 렌더링이 가능하며 Apex에서 프로그래밍 방식으로 URL, 이진 데이터 등에 액세스 할 수 있으므로 문서를 사용하는 IMHO가 좋습니다.

1
  • 이미지는 URL 속성을 사용하여 태그에 "/servlet/servlet.FileDownload?file="을 사용하여 표시됩니다.

예 :. <apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/> 자세한 내용은

, 방문 Displaying Images in a Visual Force Page