4

我写了一个简单的 Visualforce 页面,让用户上传图像文件,然后将文件保存到ContentVersion对象。

现在我想在我的自定义 visualforce 页面中显示保存的图像。甚至可能吗?貌似<apex:image>不能用。也<img href="{!cv.contentVersion}"...>没有运气。

真正的问题是我确实成功上传了图像文件,但它的 URL 是什么?我在谷歌外部使用随机 URL 进行了测试,我可以显示图像(如 /../..some.jpg")。但我无法弄清楚已上传到 contentversion 的图像文件的绝对 URL 是什么.

注意:这不是静态资源,因为我的用户可能会经常上传图片来更改他们的用户图片。

代码

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

视觉力量页面

<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>
4

5 回答 5

4

我不相信目前可以从内容中提供它 ScottW 提供的格式适用于 Documents。

我所做的另一个选择是将包含我的图像的 zip 文件上传到静态资源,然后可以引用。

于 2011-03-29T12:22:50.487 回答
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;
}
于 2011-07-04T20:02:16.923 回答
1
  • 图像通过使用 URL 属性在标签中使用“/servlet/servlet.FileDownload?file=”显示。

例子 :<apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>

有关更多信息,请访问在 Visual Force 页面中显示图像

于 2012-01-15T13:01:40.000 回答
1

根据我的经验,“thegogz”是正确的 - 目前无法直接从 Content 渲染图像。正如其他人所指出的,从文档和/或静态资源呈现确实有效,恕我直言,使用文档更可取,因为您可以在 Apex 中以编程方式访问 URL、二进制数据等。

于 2011-07-16T11:02:34.497 回答
1

尝试<apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>

于 2011-03-28T21:06:06.863 回答