首页 > 开发 > Java > 正文

java通过url下载文件并输出的方法

2024-07-13 10:16:21
字体:
来源:转载
供稿:网友

实例如下所示:

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武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表