java從服務器下載文件,可選擇保存路徑


Java后台,代碼如下

public static void downFile(HttpServletRequest request, HttpServletResponse response,String fileUrl,String fileName){
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
   OutputStream fos = null;
   InputStream fis = null;
        try {
            fis = new FileInputStream(fileUrl);
            bis = new BufferedInputStream(fis);
            fos = response.getOutputStream();
            bos = new BufferedOutputStream(fos);
            setFileDownloadHeader(request,response, fileName);
            int byteRead = 0;
            byte[] buffer = new byte[8192];
            while((byteRead=bis.read(buffer,0,8192))!=-1){
                bos.write(buffer,0,byteRead);
            }
            bos.flush();
            fis.close();
            bis.close();
            fos.close();
            bos.close();
        } catch (Exception e) {
        }
}

public static void setFileDownloadHeader(HttpServletRequest request,HttpServletResponse response, String fileName) {
   try {
       //中文文件名支持
       String encodedfileName = null;
       String agent = request.getHeader("USER-AGENT");
       
       if(null != agent && -1 != agent.indexOf("MSIE")){//IE
           encodedfileName = java.net.URLEncoder.encode(fileName,"UTF-8");
       }else if(null != agent && -1 != agent.indexOf("Mozilla")){
           encodedfileName = new String (fileName.getBytes("UTF-8"),"iso-8859-1");
       }else{
           encodedfileName = java.net.URLEncoder.encode(fileName,"UTF-8");
       }
       response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedfileName + "\"");
   } catch (UnsupportedEncodingException e) {
       e.printStackTrace();
   }
}

 

其中fileUrl是服務器上要下載文件的路徑,fileName是客戶端下載文件的默認名稱

以上代碼參考了小帥帥丶分享的代碼,鏈接如下http://www.oschina.net/code/snippet_1444646_47221

.在為了能夠在瀏覽器端選擇路徑,下載按鈕的觸發方式應該使用    window.location.href =調用后台方法路徑    的方式   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM