大家好我正在开发一个关于salesforce的应用程序。 我想在visualforce页面中读取zip附件中的文件内容,但不解压缩zip文件。 我怎样才能做到这一点?有没有办法做到这一点?
答案 0 :(得分:2)
已修改问题的更新:
请看看安德鲁·福塞特的Handling Office Files and Zip Files in Apex – Part 2。
有关于如何使用存储在附件中的图像执行此操作的基本知识文章。见How can I Display Base64 Data on page layout?
在此示例中,AttachmentID通过查询字符串参数传递,但您可以查找它,但最适合您的要求。
Visualforce页面:
<apex:page controller="ViewImage" cache="true">
<img src="data:{!att.ContentType};base64,{!image}" />
</apex:page>
控制器:
public class ViewImage {
public Attachment att {
get {
if (att == null) {
String id = ApexPages.currentPage().getParameters().get('AttachmentID');
att = [SELECT Body, ContentType, Name FROM Attachment WHERE ID = :id];
}
return att;
}
private set;
}
public String image {
get {
return EncodingUtil.Base64Encode(att.body);
}
}
}
答案 1 :(得分:1)
大家,我使用JSzip库实现了这一点,这是我的代码 -
在apex页面中,我编写了javascript函数 -
function viewContent(){
var zip = null;
var zipFileName = null;
var zipFileNames = null;
data = "{!contentAsText}";
zip = new JSZip(data, {base64:true});
zipFileName = 'files.zip';
zipFileNames = [];
for(var zipfileName in zip.files){
zipFileNames.push(zipfileName);
if(zipfileName == 'index.html'){
var file = zip.files[zipfileName];
var data = file.data;
document.getElementById('contentdiv').innerHTML = data;
//var data = JSZipBase64.encode(file.data);
}
}
在控制器中 -
public String contentAsText {get;set;}
List<Attachment> atts = [Select Id, Body from Attachment where name='files.zip' limit 1];
contentAsText = EncodingUtil.base64Encode(atts[0].Body);
此链接可以帮助您 -
http://andyinthecloud.com/2012/12/09/handling-office-files-and-zip-files-in-apex-part-2/