zoukankan      html  css  js  c++  java
  • java文件下载

    package com.common.util;

    import org.apache.log4j.Logger;

    import javax.servlet.http.HttpServletResponse;
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    import java.util.Map;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;

    public final class FileUtils {

    private static final Logger logger = Logger.getLogger(FileUtils.class);


    //文件下载
    public void downLoadFile(HttpServletResponse response,String path) throws Exception {
    logger.info("path:"+path);
    File f = new File(path);
    if (!f.exists()) {
    response.sendError(404, "File not found!");
    return;
    }
    String fileName = f.getName();
    fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");

    BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
    byte[] buf = new byte[1024];
    int len = 0;
    response.reset();
    response.setContentType("application/x-msdownload");
    response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
    OutputStream out = response.getOutputStream();
    while ((len = br.read(buf)) > 0){
    out.write(buf, 0, len);
    }
    br.close();
    out.close();
    }


    //下载压缩包
    public static void downloadZipFileByInputStream(HttpServletResponse response, Map<String,InputStream> map, String zipName) throws Exception{
    response.setContentType("application/x-msdownload");
    response.setHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(zipName, "utf-8"));

    ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
    BufferedOutputStream bos = new BufferedOutputStream(zos);
    for(Map.Entry<String, InputStream> entry : map.entrySet()){
    String fileName = entry.getKey(); //每个文件的文件名
    InputStream inputStream = entry.getValue(); //每个文件的输入流

    BufferedInputStream bis = new BufferedInputStream(inputStream);
    zos.putNextEntry(new ZipEntry(fileName));

    int len = 0;
    byte[] buf = new byte[10 * 1024];
    while( (len=bis.read(buf, 0, buf.length)) != -1){
    bos.write(buf, 0, len);
    }
    bis.close();
    bos.flush();
    }
    bos.close();
    }

    //下载压缩包
    public void downloadZipFileByByte(HttpServletResponse response, Map<String, byte[]> files, String zipName) throws Exception{
    response.setContentType("application/x-msdownload");
    response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(zipName, "utf-8"));

    ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
    BufferedOutputStream bos = new BufferedOutputStream(zos);

    for(Map.Entry<String, byte[]> entry : files.entrySet()){
    String fileName = entry.getKey(); //每个文件的文件名
    byte[] file = entry.getValue(); //每个文件的字节

    BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(file));
    zos.putNextEntry(new ZipEntry(fileName));

    int len = 0;
    byte[] buf = new byte[10 * 1024];
    while( (len=bis.read(buf, 0, buf.length)) != -1){
    bos.write(buf, 0, len);
    }
    bis.close();
    bos.flush();
    }
    bos.close();
    }
    }
  • 相关阅读:
    SVN服务器搭建和使用(一)
    TortoiseSVN客户端重新设置用户名和密码
    UML类图
    String_Helper
    windows常用命令集锦
    JavaScript性能优化小知识总结(转)
    Uploadify 3.2 参数属性、事件、方法函数详解
    记一次 Hibernate 插入数据中文乱码报错解决
    Spring——ClassPathXmlApplicationContext(配置文件路径解析 1)
    Mybatis错误——Could not find parameter map java.util.Map
  • 原文地址:https://www.cnblogs.com/zq-boke/p/11089741.html
Copyright © 2011-2022 走看看