我們現在要下載一個壓縮包文件 并設置密碼,密碼統一固定
后臺部分:
@Value("${drap_platform.export_password}")private String exportPassword
;@Overridepublic void createZip(List<TmsTemplate> list
,HttpServletResponse response
,HttpServletRequest request
) throws IOException {JSONObject jsonObject
= new JSONObject();String jsonStr
= jsonObject
.toJSONString(list
, SerializerFeature.WriteDateUseDateFormat);logger
.debug("createZip json: {}" , jsonStr
);String currTime
=DateUtils.dateTimeNow();String folder
= "template_" + currTime
;String dirName
= tarPath
+ File.separator
+ folder
+ File.separator
;logger
.debug("要操作的文件夾: {}" , dirName
);boolean exist
= FileUtil.exist(dirName
);if (exist
) {FileUtil.del(dirName
);}File jsonFile
= FileUtil.file(dirName
+ "template_export.json");FileUtil.writeBytes(jsonStr
.getBytes(),jsonFile
);FileUtil.mkdir(dirName
+"etl");for (TmsTemplate tmsTemplate
: list
) {if ("1".equals(tmsTemplate
.getTemplateKind().toUpperCase(Locale.ROOT
))) {FileUtil.mkdir(dirName
+"etl"+ File.separator
+ tmsTemplate
.getTemplateId());TmsTemplateFile tmsTemplateFile
= new TmsTemplateFile();tmsTemplateFile
.setTemplateId(tmsTemplate
.getTemplateId());List<TmsTemplateFile> tmsTemplateFiles
= tmsTemplateFileMapper
.selectTmsTemplateFileList(tmsTemplateFile
);for (TmsTemplateFile templateFile
: tmsTemplateFiles
) {String fileName
= templateFile
.getFileUrl().substring(8);logger
.debug("source file {}" , fileName
);String src
= tarPath
+fileName
;String dest
= dirName
+"etl"+ File.separator
+ tmsTemplate
.getTemplateId() + File.separator
+templateFile
.getFileName();logger
.debug("開始復制文件 從: {} 到 {}" , src
, dest
);FileUtil.copy(src
, dest
, true);}}}logger
.debug("開始對文件夾:{} 進行壓縮加密", dirName
);String zipFileName
= tarPath
+ File.separator
+ folder
+ ".zip";logger
.debug("壓縮的以后的文件:{}", zipFileName
);ZipUtil.zipEncrypt(dirName
,zipFileName
,exportPassword
);String newFileName
= tarPath
+ File.separator
+ folder
+ ".tms";File newFile
= new File(zipFileName
);FileUtil.rename(newFile
,newFileName
,true);FileUtil.del(new File(dirName
));response
.setCharacterEncoding("utf-8");response
.setContentType("multipart/form-data");response
.setHeader("Content-Disposition", "attachment;fileName=" + FileUtils.setFileDownloadHeader(request
, newFileName
));FileUtils.writeBytes(newFileName
, response
.getOutputStream());FileUtil.del(new File(newFileName
));}
前端vue部分:
生成一個tmsdownload.js 去調用里面的下載 download 方法
import { downLoad
} from '@
/utils
/tmsdownload'
importTemplate() {importTemplate().then(response
=> {this.download(response
.msg
)})},
tmsdownload.js :
import axios from
'axios'
import { getToken
} from '@
/utils
/auth'
const mimeMap
= {xlsx
: 'application
/vnd
.openxmlformats
-officedocument
.spreadsheetml
.sheet'
,zip
: 'application
/zip'
}const baseUrl
= window
._CONFIG
['BASE_URL'
]
export function
downLoad(str
, filename
) {var url
= baseUrl
+ str
axios({method
: 'get',url
: url
,responseType
: 'blob',headers
: { '
Authorization': 'Bearer '
+ getToken() }}).then(res
=> {resolveBlob(res
, mimeMap
.zip
)})
}
export function
resolveBlob(res
, mimeType
) {const aLink
= document
.createElement('a')var blob
= new Blob([res
.data
], { type
: mimeType
})var fileName
= 'template_'
+ Date.now() + '.tms'fileName
= fileName
.replace(/\"
/g
, ''
)aLink
.href
= URL
.createObjectURL(blob
)aLink
.setAttribute('download'
, fileName
) document
.body
.appendChild(aLink
)aLink
.click()document
.body
.appendChild(aLink
)
}
總結
以上是生活随笔為你收集整理的java 导出加密压缩包 设置 压缩包加密密码 并下载 (springboot+文件工具类)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。