JAVA-批量下载zip
案例一
@ApiOperation(value = "根据id 批量下载文件", notes = "根据id 批量下载文件")
@RequestMapping(value = "/downloadFiles/{id}", method = RequestMethod.GET)
@ApiImplicitParam(name = "sheetId", value = "工单ID", required = true, dataType = "String", paramType = "path")
public void downloadFiles(HttpServletRequest request, HttpServletResponse response, @PathVariable String id) throws Exception {
List<OssMediaFile> list = null;
try {
EntityWrapper<OssMediaFile> wrapper = new EntityWrapper<>();
wrapper.eq("id", id);
wrapper.eq("is_delete", 0);
list = this.baseService.selectList(wrapper);
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
String header = request.getHeader("User-Agent").toUpperCase();
String fileName = "附件" + String.valueOf(System.currentTimeMillis()) + ".zip";
if (!header.contains("MSIE") && !header.contains("TRIDENT") && !header.contains("EDGE")) {
fileName = new String(fileName.getBytes(), "ISO8859-1");
} else {
fileName = URLEncoder.encode(fileName, "utf-8");
fileName = fileName.replace("+", "%20");
}
response.setContentType("multipart/form-data");
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
try(ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) {
for (int i = 0; i < list.size(); i++) {
OssMediaFile mediaFile = list.get(i);
logger.info("ossMediaFile参数:{}", JSONObject.toJSONString(mediaFile));
InputStream is = null;
try {
zipOut.putNextEntry(new ZipEntry(mediaFile.getFileName()));
String urlName = mediaFile.getFileUrl();
URL url = new URL(urlName);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置是否向HttpURLConnection输出
conn.setDoOutput(false);
// 设置是否从httpUrlConnection读入
conn.setDoInput(true);
/** 设置连接方式:GET */
conn.setRequestMethod("GET");
/** 设置连接主机服务器超时时间:5000毫秒 */
conn.setConnectTimeout(5000);
/** 发送GET方式请求,使用connet方法建立和远程资源之间的实际连接即可 */
conn.connect();
int status = conn.getResponseCode();
logger.info("---status:" + status);
if(status!= HttpURLConnection.HTTP_OK){
is = conn.getErrorStream();
}else{
is = conn.getInputStream();
}
if (null == is) {
continue;
}
int temp = 0;
while ((temp = is.read()) != -1) {
zipOut.write(temp);
}
is.close();
/** 关闭远程连接 */
conn.disconnect();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
zipOut.closeEntry();
logger.info("一键下载结束");
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw new RuntimeException("附件下载失败");
}
}
JAVA-批量下载zip的更多相关文章
- java批量下载,将多文件打包成zip格式下载
现在的需求的: 根据产品族.产品类型,下载该产品族.产品类型下面的pic包: pic包是zip压缩文件: t_product表: 这些包以blob形式存在另一张表中: t_imagefile表: 现在 ...
- Java批量下载文件并zip打包
客户需求:列表勾选需要的信息,点击批量下载文件的功能.这里分享下我们系统的解决方案:先生成要下载的文件,然后将其进行压缩,生成zip压缩文件,然后使用浏览器的下载功能即可完成批量下载的需求.以下是zi ...
- java批量下载文件为zip包
批量下载文件为zip包的工具类 package com.meeno.trainsys.util; import javax.servlet.http.HttpServletRequest; impor ...
- java批量下载
最近做了一些有关批量压缩下载的功能,网上也找了一些资源,但都不是太全面,所以自己整理一份,已备不时之需. 直接上代码: // 获取项目路径 private static String WEBC ...
- Java 批量下载excel,并对excel赋值,压缩为zip文件(POI版)
package com.neusoft.nda.servlet; import java.io.File;import java.io.FileInputStream;import java.io.F ...
- java+批量下载文件到指定文件夹
需求 导出文件后存留在了服务器中,需要提供下载按钮,点击后可下载到本地:(因为涉及多个文件,下载前先将文件进行压缩,提供下载压缩文件) 效果预览 代码 主要方法 /** * 下载生成的所有在线 ...
- java+批量下载大文件
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...
- JAVA 批量下载服务器文件到本地指定文件夹并重命名
/** * @功能 下载文件到指定文件夹并重命名 * @param url 请求的路径 * @param filePath 文件将要保存的目录 * @param filename 保存到本地的文件名 ...
- java/resteasy批量下载存储在阿里云OSS上的文件,并打包压缩
现在需要从oss上面批量下载文件并压缩打包,搜了很多相关博客,均是缺胳膊少腿,要么是和官网说法不一,要么就压缩包工具类不给出 官方API https://help.aliyun.com/documen ...
- Java批量文件打包下载zip
网上看了很多,本文使用ant.jar中的org.apache.tools.zip,页面用js表单提交 代码供参考: ACTION: /* * 另存为 */ @RequestMapping(" ...
随机推荐
- mysql8改密码
登录后执行语句 ALTER USER 'test'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码'; 修改Host范围 updat ...
- linux忘记密码-进入单用户模式修改密码
1.重启系统 重启可以使用命令 reboot.init 6.shutdown -r now 或点击VMware-虚拟机-电源-重新启动客户机 2.进入GRUB界面 重启后,在启动界面按上下方向键选择第 ...
- 关于 MySQL 的 General Log 功能
检查 General Log 输出目标 SHOW GLOBAL VARIABLES LIKE 'log_output'; # Type: Set # Default Value: FILE # Val ...
- python脚本打包
python脚本打包 Python写脚本很方便,可以直接在机器上运行,但有时候脚本源码不方便透露或是其他机器不支持的原因,需要将其打包成可执行文件,需要用到 pyinstaller 首先下载pip s ...
- SQL Server FOR XML EXPLICIT 一步步学习
查看网址:https://www.itdaan.com/blog/2015/05/05/510cd42eb587c98bcd25ef0e5b687fd1.html
- ES-索引库
数据准备 本次学习涵盖ES简单查询,聚合查询,所以在创建测试库时会可以涵盖一些个性化字段,用于学习搜索用法 索引创建 几个疑问 1.能否用中文命名 安排:我用"蓝闪test",中英 ...
- JS 根据base64获取文件宽高
const {width, height} = await this.getImgSize(base64) async getImgSize(base64) { const image = new I ...
- 《Makefile常用函数》
https://blog.csdn.net/oqqHuTu12345678/article/details/125617988?spm=1001.2014.3001.5501
- GDAL 安装
命令总和 add-apt-repository ppa:ubuntugis/ppa apt-get update apt-get install gdal-bin apt-get install li ...
- 日常开发记录-this.$message,this.$prompt,交换弹窗确定和取消按钮的位置,确定在左,取消在右
代码: <template> <el-button type="text" @click="open">点击打开 Message Box ...