java通过url下载文件并输出的方法
时间:2021-07-04 09:24:21|栏目:JAVA代码|点击: 次
实例如下所示:
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();
}
上一篇:Springboot2.1.6集成activiti7出现登录验证的实现
栏 目:JAVA代码
下一篇:Spring Security单项目权限设计过程解析
本文标题:java通过url下载文件并输出的方法
本文地址:http://www.codeinn.net/misctech/152229.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




