下載網絡文件的Java代碼

ew45 9年前發布 | 1K 次閱讀 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;
}

} </pre>

 本文由用戶 ew45 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!