java通過url下載文件并輸出的方法
更新時(shí)間:2018年01月10日 14:32:54 作者:心境666
下面小編就為大家分享一篇java通過url下載文件并輸出的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
實(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錯誤
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下載文件并輸出的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
使用Spring Data Jpa的CriteriaQuery一個(gè)陷阱
使用Spring Data Jpa的CriteriaQuery進(jìn)行動態(tài)條件查詢時(shí),可能會遇到一個(gè)陷阱,當(dāng)條件為空時(shí),查詢不到任何結(jié)果,并不是期望的返回所有結(jié)果。這是為什么呢?2020-11-11
Spring-IOC容器-Bean管理-基于XML方式超詳解
這篇文章主要介紹了Spring為IOC容器Bean的管理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-08-08
jackson 實(shí)體轉(zhuǎn)json 為NULL或者為空不參加序列化(實(shí)例講解)
下面小編就為大家?guī)硪黄猨ackson 實(shí)體轉(zhuǎn)json 為NULL或者為空不參加序列化(實(shí)例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
使用Java Collections實(shí)現(xiàn)集合排序的全面指南
在Java編程中,集合(Collection)是處理數(shù)據(jù)的重要工具之一,Java集合框架提供了豐富的接口和類來操作數(shù)據(jù)集合,而排序是其中最常見的操作之一,本文將詳細(xì)介紹如何使用Collections類對集合進(jìn)行排序,并深入探討其背后的原理和使用場景,需要的朋友可以參考下2025-02-02
基于spring+springmvc+hibernate 整合深入剖析
這篇文章主要介紹了于spring+springmvc+hibernate整合實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Java學(xué)習(xí)之反射機(jī)制及應(yīng)用場景介紹
本篇文章主要介紹了Java反射機(jī)制及應(yīng)用場景,反射機(jī)制是很多Java框架的基石。非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-11-11

