下载网络文件的Java代码详解编程语言

import java.io.BufferedInputStream; 
import java.io.BufferedOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
 
import javax.servlet.http.HttpServletResponse; 
 
import org.apache.log4j.Logger; 
 
public class DownLoadUtil { 
    private static Logger logger = Logger.getLogger(DownLoadUtil.class); 
    /** 
     * 下载文件 
     * @param name 用户下载的文件名(*****.***) 
     * @param filePath 文件路径 
     * @param response  
     * @param fileType 文件类型 
     * @return 
     * @throws Exception 
     */ 
    public static boolean downLoadFile(String name,String filePath, 
            HttpServletResponse response, String fileType) 
            throws Exception { 
        logger.info("start invoke downLoadFile,[filePath:"+filePath+" , fileType:"+fileType+"]"); 
        File file = new File(filePath); 
        //设置文件类型 
        if("pdf".equals(fileType)){ 
            response.setContentType("application/pdf"); 
        }else if("xls".equals(fileType)){ 
            response.setContentType("application/msexcel"); 
        }else if("doc".equals(fileType)){ 
            response.setContentType("application/msword"); 
        } 
        response.setHeader("Content-Disposition", "attachment;filename=/"" 
                + new String(name.getBytes("GB2312"), "ISO8859-1") + "/""); 
        //response.setHeader("Content-Disposition", "attachment;filename=/""+ URLEncoder.encode(name, "UTF-8")+ "/""); 
        response.setContentLength((int) file.length()); 
        byte[] buffer = new byte[4096];// 缓冲区 
        BufferedOutputStream output = null; 
        BufferedInputStream input = null; 
        try { 
            output = new BufferedOutputStream(response.getOutputStream()); 
            input = new BufferedInputStream(new FileInputStream(file)); 
            int n = -1; 
            while ((n = input.read(buffer, 0, 4096)) > -1) { 
                output.write(buffer, 0, n); 
            } 
            output.flush(); 
            response.flushBuffer(); 
        } catch (Exception e) { 
            logger.error("exception when invoke downLoadFile",e); 
            throw e; 
        } finally { 
            if (input != null) 
                input.close(); 
            if (output != null) 
                output.close(); 
        } 
        logger.info("end invoke downLoadFile!"); 
        return true; 
    } 
} 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10803.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论