salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)
Posted zero.zhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)相关的知识,希望对你有一定的参考价值。
此篇参考git代码:https://github.com/pdalcol/Zippex
学习salesforce可以访问一个朋友的网站:https://www.xgeek.net
首先感谢git上提供代码的大神,学到了新的知识。salesforce不像java提供生成Zip文件的类库,通过git上copy的代码可以实现此功能,具体的使用方法以及API可以查看上方git链接。
概述:实例模拟三个上传组件,加上一个下载Zip包按钮,本地选择需要上传的文件,点击按钮后便会下载成一个压缩文件,压缩文件中包含上传的文件内容。
一.ZipController:
1 public with sharing class ZipController { 2 3 public transient Blob fileUploadBody1{get;set;} 4 5 public String fileUploadName1{get;set;} 6 7 public transient Blob fileUploadBody2{get;set;} 8 9 public String fileUploadName2{get;set;} 10 11 public transient Blob fileUploadBody3{get;set;} 12 13 public String fileUploadName3{get;set;} 14 15 public transient Map<String,Blob> fileNameToBody{get;set;} 16 17 public PageReference reference{get;set;} 18 19 public PageReference downloadZip() { 20 String zipName = \'testZip.zip\'; 21 String prefixFolder = \'folder/\'; 22 fileNameToBody = new Map<String,Blob>(); 23 if(fileUploadName1 != null && fileUploadBody1 != null) { 24 fileNameToBody.put(fileUploadName1,fileUploadBody1); 25 } 26 if(fileUploadName2 != null && fileUploadBody2 != null) { 27 fileNameToBody.put(fileUploadName2,fileUploadBody2); 28 } 29 if(fileUploadName3 != null && fileUploadBody3 != null) { 30 fileNameToBody.put(fileUploadName3,fileUploadBody3); 31 } 32 Zippex zip = new Zippex(); 33 for(String fileName : fileNameToBody.keySet()) { 34 zip.addFile(prefixFolder + fileName, fileNameToBody.get(fileName),null); 35 } 36 try{ 37 Document doc = new Document(); 38 doc.FolderId = UserInfo.getUserId(); 39 doc.Name = zipName; 40 doc.Body = zip.getZipArchive(); 41 insert doc; 42 return new PageReference(\'/servlet/servlet.FileDownload?file=\' + doc.Id); 43 } catch ( Exception ex ) { 44 ApexPages.addMessage(new ApexPages.Message(ApexPages.severity.ERROR,\'生成zip失败\')); 45 } 46 return null; 47 } 48 }
二.ZipPage
<apex:page controller="ZipController"> <apex:form > <apex:pageMessages /> <apex:inputFile value="{!fileUploadBody1}" filename="{!fileUploadName1}" /> <apex:inputFile value="{!fileUploadBody2}" filename="{!fileUploadName2}" /> <apex:inputFile value="{!fileUploadBody3}" filename="{!fileUploadName3}" /> <apex:pageBlock title="download zip "> <apex:commandButton action="{!downloadZip}" value="Download"/> </apex:pageBlock> </apex:form> </apex:page>
三.显示效果:
总结:此种方式对于中文文件处理会有乱码问题,本来想通过addFile方法进行一下UTF-8编码转换,结果转换完getZipArchive方法出现了编码解码的异常,有兴趣的朋友可以解决中文乱码的问题并且欢迎分享。
以上是关于salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)的主要内容,如果未能解决你的问题,请参考以下文章
salesforce 零基础学习(五十二)Trigger使用篇
salesforce lightning零基础学习(十三) 自定义Lookup组件(Single & Multiple)
salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce
salesforce 零基础学习(二十三)数据记录导出至excel(自定义报表导出)
salesforce零基础学习(八十三)analytics:reportChart实现Dashboard(仪表盘)功能效果