前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)

salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)

作者头像
Zero-Zhang
发布2018-01-05 11:36:35
8900
发布2018-01-05 11:36:35
举报

此篇参考git代码:https://github.com/pdalcol/Zippex

学习salesforce可以访问一个朋友的网站:https://www.xgeek.net

首先感谢git上提供代码的大神,学到了新的知识。salesforce不像java提供生成Zip文件的类库,通过git上copy的代码可以实现此功能,具体的使用方法以及API可以查看上方git链接。

概述:实例模拟三个上传组件,加上一个下载Zip包按钮,本地选择需要上传的文件,点击按钮后便会下载成一个压缩文件,压缩文件中包含上传的文件内容。

一.ZipController:

代码语言:javascript
复制
 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

代码语言:javascript
复制
<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方法出现了编码解码的异常,有兴趣的朋友可以解决中文乱码的问题并且欢迎分享。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-12-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档