// response 会以流的形式响应到浏览器上 path文件地址
protected void downloadFile(HttpServletRequest request, HttpServletResponse response)
throws Exception {
Map<String, Object> parameterMap = getParameterMap(request);
String resourceId =(String)parameterMap.get("resourceId");
String depId =(String)parameterMap.get("depId");
ResourceDto resourceDto = resourceService.getByResourceId(resourceId);
String path=resourceDto.getOutterIp()+resourceDto.getOriginPath();
log.info("下载地址:{}",path);
log.info("下载文件名称: {}",resourceDto.getResourceName());
if (null == path ) {
throw new RuntimeException("remoteFileUrl is invalid!");
}
this.buildDownloadRecord(depId,resourceId);
URL url = new URL(path);
BufferedInputStream in = null;
in = new BufferedInputStream(url.openStream());
response.reset();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition",
"attachment;filename=\"" + URLEncoder.encode(resourceDto.getResourceName(), "UTF-8") + "\"");
// 将网络输入流转换为输出流
try {
int i;
while ((i = in.read()) != -1) {
response.getOutputStream().write(i);
}
} catch (IOException e) {
log.error("下载文件有误:{}",e);
} finally {
in.close();
response.getOutputStream().close();
}
}
java实现从服务器下载文件浏览器上
最新推荐文章于 2024-07-31 04:38:25 发布
本文介绍了一个使用Java实现的文件下载方法,通过HttpServletRequest和HttpServletResponse处理文件下载请求,从远程资源中获取文件并将其发送到客户端。该方法首先从请求中获取资源ID和部门ID,然后调用资源服务获取资源详情,包括文件的外网IP和原始路径。接着构建下载记录,通过URL获取文件的输入流,并设置响应头以允许文件下载。

1088

被折叠的 条评论
为什么被折叠?



