根据url下载文件为zip格式文件到客户端并解决火狐浏览器中文乱码问题

简介: 根据文件的远程路径将多文件合并成zip压缩包,然后下载到客户端,并解决火狐浏览器中文文件名乱码问题,下面是代码。

根据文件的远程路径将多文件合并成zip压缩包,然后下载到客户端,并解决火狐浏览器中文文件名乱码问题,下面是代码


package com.test.util;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.http.HttpServletResponse;
/**
 * @ClassName: DownLoadUtil
 * @Description: 下载文件到客户端工具类
 * @author xiaojie
 * @date 2019年11月6日 下午10:15:45
 *
 */
public class DownLoadUtil {
  public final static String SUFFIX = ".zip";
  public static void downLoad(HttpServletResponse response) {
    List<String> imageList = new ArrayList<String>();
    imageList.add("www.baidu.com/image/123.jpg");
    imageList.add("www.baidu.com/image/2343.jpg");
    imageList.add("www.baidu.com/image/12345.jpg");
    BufferedInputStream is = null;
    ZipOutputStream zos = null;
    try {
      String zipName = "保存文件名" + SUFFIX;
      zipName = URLEncoder.encode(zipName, "UTF-8");
      // 指明response的返回对象是文件流
      response.setContentType("application/octet-stream; charset=UTF-8");
      // 设置在下载框默认显示的文件名,filename*=utf-8'zh_cn'解决火狐浏览器中文名称乱码问题
      response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + zipName);
      zos = new ZipOutputStream(response.getOutputStream());
      for (String image : imageList) {
        URL url = new URL(image);
        is = new BufferedInputStream(url.openStream());
        zos.putNextEntry(new ZipEntry(image));
        byte[] buffer = new byte[1024];
        int r = 0;
        while ((r = is.read(buffer)) != -1) {
          zos.write(buffer, 0, r);
        }
      }
    } catch (UnsupportedEncodingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (MalformedURLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } finally {
      try {
        //关闭流
        is.close();
        zos.flush();
        zos.close();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
}
相关文章
|
8月前
|
Web App开发 Linux 数据安全/隐私保护
Apple Safari 26.0.1 发布 - macOS 专属浏览器 (独立安装包下载)
Apple Safari 26.0.1 发布 - macOS 专属浏览器 (独立安装包下载)
557 0
Apple Safari 26.0.1 发布 - macOS 专属浏览器 (独立安装包下载)
|
9月前
|
Web App开发 Linux 数据安全/隐私保护
Apple Safari 26 正式版发布 - macOS 专属浏览器 (独立安装包下载)
Apple Safari 26 正式版发布 - macOS 专属浏览器 (独立安装包下载)
792 0
|
11月前
|
机器学习/深度学习 人工智能 文字识别
浏览器AI模型插件下载,支持chatgpt、claude、grok、gemini、DeepSeek等顶尖AI模型!
极客侧边栏是一款浏览器插件,集成ChatGPT、Claude、Grok、Gemini等全球顶尖AI模型,支持网页提问、文档分析、图片生成、智能截图、内容总结等功能。无需切换页面,办公写作效率倍增。内置书签云同步与智能整理功能,管理更高效。跨平台使用,安全便捷,是AI时代必备工具!
836 8
|
Web App开发 Linux 数据安全/隐私保护
Apple Safari 18.5 - macOS 专属浏览器 (独立安装包下载)
Apple Safari 18.5 - macOS 专属浏览器 (独立安装包下载)
920 4
Apple Safari 18.5 - macOS 专属浏览器 (独立安装包下载)
|
Web App开发 Linux 数据安全/隐私保护
Apple Safari 18.4 - macOS 专属浏览器 (独立安装包下载)
Apple Safari 18.4 - macOS 专属浏览器 (独立安装包下载)
685 3
Apple Safari 18.4 - macOS 专属浏览器 (独立安装包下载)
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
651 0
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
392 0
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
300 0
|
存储 JavaScript 前端开发
js原生方法,获取url上面所有参数,并返回一个对象
JavaScript函数`getUrlParameters`用于从URL中提取所有参数并返回一个键值对对象。它接收URL,分割查询字符串,解码参数对,并存储在对象中。重复参数键会被存储为数组。
|
JavaScript
js如何实现修改URL参数并不刷新页面
js如何实现修改URL参数并不刷新页面