java实现从linux服务器把多附件打成zip包并下载至本地(一键导出多个附件)

java实现从服务器把多附件打成zip包并下载至本地,下载路径为浏览器的默认下载路径。

下面为下载zip压缩包相关流程 :
1、找到服务器文件的存放位置,并确保文件存在
2、创建临时文件夹(临时zip 文档存放位置)
3、将多附件压缩成zip包,存放在临时文件夹内(可设置zip压缩包以及包内文件名称)
4、设置response 的 header
5、下载zip 压缩包
6、删除临时文件

温馨提示:
  		下载附件到本地不能返回json 字符串,可以无返回值或者返回String类型。

前端
前端新增一件导出按钮
在这里插入图片描述

<body class="childrenBody">
	<form class="layui-form">
		<div class="layui-form-item">
       		<div class="layui-input-inline" style="width:100%;padding-top:10px;">
				<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="exportfiles">导出全部附件</button>
			</div>
    	</div>
	</form>
	<script>
		var flag_recome = 0;
	    layui.use(['form', 'jquery', 'layer', 'laydate', 'upload', 'element'], function () {
	        var form = layui.form,
	                $ = layui.jquery,
	                laydate = layui.laydate,
	                element = layui.element,
	                layer = layui.layer,
	                upload = layui.upload;
	
	        element.render();
	
			// 点击一键导出butten 触发事件
			form.on("submit(exportfiles)",function(data){
					// 异步前开启加载效果,
		            var loadIndex = layer.load(2, {   
		                shade: [0.3, '#333']  // 0.3透明度的白色背景
		            });
		
		            var url = "exportfiles?id="+data.field.id;
		            console.log(url);
		            // 动态构造了一个form ,并提交。
		            $('<form method="post" action="' + url + '"></form>').appendTo('body').submit().remove();
		            // 异步完成后关闭加载效果
		            layer.close(loadIndex);
		            return false;
		        });
	    });
	</script>
</body>

后端代码实现:

//在application.yml 配置文件中配置临时zip文件的存放路径
#自定义参数
myconfig:
  istest: 1
  zipPath: c:/下载/
#  zipPath: /usr/project/changying/file/

//引入自定义参数
 @Value("${myconfig.zipPath}")
    private String zipPath;

//下载zip 压缩包到本地
@RequiresPermissions("admin:return:edit")
@PostMapping("exportfiles")
@ResponseBody
public void exportfiles(@RequestParam("id") String id,HttpServletResponse response){

    try {
        CaseList data=caseService.getModelById(Long.parseLong(id));
	    /*1、获取文件*/
        EntityWrapper<CaseFile> wrapper = new EntityWrapper<
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值