我编写了一个简单的Visualforce页面,让用户上传图像文件
将文件保存到ContentVersion
对象。
现在我想在自定义的visualforce页面中显示已保存的图片。是否可以?
看起来<apex:image>
无法使用。 <img href="{!cv.contentVersion}"...>
也没有运气。
真正的问题是我成功上传了图片文件,但它的URL是什么? 我在google上使用随机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
Visualforce页面
<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>
答案 0 :(得分:3)
我认为目前的内容无法提供服务.ScottW提供的格式适用于文档。
我做的另一个选择是将包含我的图像的zip文件上传到静态资源,然后可以引用它。
答案 1 :(得分: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;
}
答案 2 :(得分:1)
尝试<apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>
答案 3 :(得分:1)
根据我的经验,“thegogz”是正确的 - 目前无法直接从内容呈现图像。正如其他人所指出的那样,从文档和/或静态资源渲染确实有效,并且恕我直言使用文档是可取的,因为您可以在Apex中以编程方式访问URL,二进制数据等。
答案 4 :(得分:1)
示例:<apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>
了解更多信息, 访问Displaying Images in a Visual Force Page