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

DownLoadUtil.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; 
    } 
}

调用 DownLoadUtil.java;

public ActionForward downLoadExcelModel(ActionMapping actionMapping, 
   ActionForm actionForm, HttpServletRequest request, 
   HttpServletResponse response) throws Exception { 
  String busType = request.getParameter("busType"); 
  String path = request.getSession().getServletContext().getRealPath( 
    "/resources"); 
  String name = null;         
  String fileName = null;    //服务器上文件名 
    fileName = "xxxl.xls"; 
    name = "xxxx.xls"; 
  } 
  String filePath = path + System.getProperty("file.separator") + fileName; 
  DownLoadUtil.downLoadFile(name,filePath, response, "xls"); 
  return null; 
 }

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10771.html

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

相关推荐

发表回复

登录后才能评论