實例如下所示:
controller:@RequestMapping(value = "/{loanid}/{atmtType}") public void doGet(@PathVariable("loanid") String loanid,@PathVariable("atmtType") String atmtType,   HttpServletRequest req,HttpServletResponse response) {  Map<String,String> map = new HashMap<String,String>();  map.put("loanid", loanid);  Map<String, String> urlByLoanid= new HashMap<String,String>(); // Map<String, String> urlByLoanid = zcmQueryInfoService.queryUrlByLoanid(map);  try {   if(urlByLoanid!=null){    String wjurl="http://10.0.15.11:8080/gateway//nfs/marvel-core-admin/2017/10/11/compact_seal_17101119371231615_7.pdf";    //String wjurl = urlByLoanid.get("url");    int i = wjurl.lastIndexOf("/");    String fileName = wjurl.substring(i+1);        URL url = new URL(wjurl);     HttpURLConnection conn = (HttpURLConnection)url.openConnection();     //設置超時間為3秒     conn.setConnectTimeout(3*1000);     //防止屏蔽程序抓取而返回403錯誤     conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");     //得到輸入流     InputStream inputStream = conn.getInputStream();     //獲取自己數組     byte[] bs = readInputStream(inputStream);     response.setContentType("application/octet-stream;charset=ISO8859-1");    BufferedOutputStream output = null;    BufferedInputStream input = null;     try {      output = new BufferedOutputStream(response.getOutputStream());      // 中文文件名必須轉碼為 ISO8859-1,否則為亂碼      String fileNameDown = new String(fileName.getBytes(), "ISO8859-1");      // 作為附件下載      response.setHeader("Content-Disposition", "attachment;filename=" + fileNameDown);        output.write(bs);      response.flushBuffer();     } catch (Exception e) {      log.error("Download log file error", e);     } // 用戶可能取消了下載     finally {      if (input != null)       try {        input.close();       } catch (IOException e) {        e.printStackTrace();       }      if (output != null)       try {        output.close();       } catch (IOException e) {        e.printStackTrace();       }     }   }  } catch (Exception e) {   e.printStackTrace();  } }/**   * 從輸入流中獲取字節數組   * @param inputStream   * @return   * @throws IOException   */  public static byte[] readInputStream(InputStream inputStream) throws IOException {   byte[] buffer = new byte[1024];   int len = 0;   ByteArrayOutputStream bos = new ByteArrayOutputStream();   while((len = inputStream.read(buffer)) != -1) {    bos.write(buffer, 0, len);   }   bos.close();   return bos.toByteArray();  } 以上這篇java通過url下載文件并輸出的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選