Salesforce中用Apex+JSZip打包下载多个附件

在Salesforce开发过程中,是否碰到过需要Zip打包附件或者PDF文件并下载,这一功能的时候?
遗憾的是Apex并不支持Zip的功能,所以一般我们都通过Heroku或AWS等外部接口进行打包来解决这一问题。 实际上仅在Salesforce上我们也能进行文件打包下载。
本文旨在分享以Apex+JSZip的方式来实现这一功能。

程序的处理流程,大概为以下几个步骤。
1.JS端通过WebService获取要下载的文件的Blob数据。
2.使用JSZip类库进行文件压缩,并生成Zip文件。
3.生成的Zip文件上传到Apex中、插入到Document对象里。
4.通过获取到的Document的ID,跳转到下载页面执行下载。

开始组装试试吧。

上传测试文件到附件中

向Account中上传两个测试用的附件(apex PDF.pdfとapex Word.docx)。 Account

创建Apex类WS_Util与WS_ZipUtil

WS_Util.cls

WS_ZipUtil.cls

创建两个Static Resource类库,jQuery与JSZip

添加jQueryJSZip这两个js文件到Static Resource中。

新建VF页面

实际下载试试

Demo Zip文件可以正常下载咯~!
zip

SourceCode

Download from Github

最近更新

如果你在搜寻一种只通过Apex进行Zip压缩文件的方式,你可以参考这边文章 : Salesforce中仅使用Apex进行打包下载多个附件

Enjoy It!