java通過url下載文件并輸出的方法
更新時(shí)間:2018年01月10日 14:32:54 作者:心境666
下面小編就為大家分享一篇java通過url下載文件并輸出的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
實(shí)例如下所示:
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(); //設(shè)置超時(shí)間為3秒 conn.setConnectTimeout(3*1000); //防止屏蔽程序抓取而返回403錯(cuò)誤 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); //得到輸入流 InputStream inputStream = conn.getInputStream(); //獲取自己數(shù)組 byte[] bs = readInputStream(inputStream); response.setContentType("application/octet-stream;charset=ISO8859-1"); BufferedOutputStream output = null; BufferedInputStream input = null; try { output = new BufferedOutputStream(response.getOutputStream()); // 中文文件名必須轉(zhuǎn)碼為 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(); } } /** * 從輸入流中獲取字節(jié)數(shù)組 * @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下載文件并輸出的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
Java編程實(shí)現(xiàn)逆波蘭表達(dá)式代碼示例
本文主要對(duì)Java算法逆波蘭表達(dá)式的相關(guān)內(nèi)容作了介紹,涉及逆波蘭表達(dá)式的定義已經(jīng)在Java中的實(shí)現(xiàn),具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10IDEA+maven+SpringBoot+JPA+Thymeleaf實(shí)現(xiàn)Crud及分頁(yè)
這篇文章主要介紹了不需要電腦任何操作基于IDEA + maven + SpringBoot + JPA + Thymeleaf實(shí)現(xiàn)CRUD及分頁(yè),需要的朋友可以參考下2018-03-03JVM內(nèi)存結(jié)構(gòu):程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法棧
JVM 基本上是每家招聘公司都會(huì)問到的問題,它們會(huì)這么無(wú)聊問這些不切實(shí)際的問題嗎?很顯然不是。由 JVM 引發(fā)的故障問題,無(wú)論在我們開發(fā)過程中還是生產(chǎn)環(huán)境下都是非常常見的2021-06-06java Spring整合Freemarker的詳細(xì)步驟
本文對(duì)Spring整合Freemarker步驟做了詳細(xì)的說(shuō)明,按步驟操作一定可以整合通過,這里提供給大家做參考2013-11-11MyBatisPlus 查詢selectOne方法實(shí)現(xiàn)
本文主要介紹了MyBatisPlus 查詢selectOne方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01SpringBoot集成Sharding Jdbc使用復(fù)合分片的實(shí)踐
數(shù)據(jù)庫(kù)分庫(kù)分表中間件是采用的 apache sharding。本文主要介紹了SpringBoot集成Sharding Jdbc使用復(fù)合分片的實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2021-09-09