java修改网络上的文件_java下载网络文件并重命名
文件下载,通过也是可以的,但是这样直接下载,一般文件名就是服务器端的没有任何意义的文件名。
今天自己用到了另外一种,先说需求:1.文件服务器与系统没有在同一服务器,所以需要使用网络地址来进行下载;
2.上传时为了避免文件重名,使用uuid来生成了文件名,真实的文件名存与数据库中;
3.所有的文件都只能下载,不可直接在浏览器上打开。
根据代码来分析:这里使用的springmvc
@RequestMapping("/download")
public String downloadAmachment(String downloadUrl, String realFileName, HttpServletRequest request,
HttpServletResponse response) {
response.setContentType("text/html;charset=UTF-8");
try {
request.setCharacterEncoding("UTF-8");
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
//此处使用的配置文件里面取出的文件服务器地址,拼凑成完整的文件服务器上的文件路径
//写demo时,可以直接写成http://xxx/xx/xx.txt.这种形式
String downLoadPath = ConfigHelper.getString("img.server.url") + downloadUrl;
response.setContentType("application/octet-stream");
response.reset();//清除response中的缓存
//根据网络文件地址创建URL
URL url = new URL(downLoadPath);
//获取此路径的连接
URLConnection conn = url.openConnection();
Long fileLength = conn.getContentLengthLong();//获取文件大小
//设置reponse响应头,真实文件名重命名,就是在这里设置,设置编码
response.setHeader("Content-disposition",
"attachment; filename=" + new String(realFileName.getBytes("utf-8"), "ISO8859-1"));
response.setHeader("Content-Length", String.valueOf(fileLength));
bis = new BufferedInputStream(conn.getInputStream());//构造读取流
bos = new BufferedOutputStream(response.getOutputStream());//构造输出流
byte[] buff = new byte[1024];
int bytesRead;
//每次读取缓存大小的流,写到输出流
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
response.flushBuffer();//将所有的读取的流返回给客户端
bis.close();
bos.close();
} catch (IOException e) {
LOG.error(e.getMessage(), e);
return ErrorPages._500;
}
return null;
}
前台页面可以用一个这里的xxxxx为文件的网络地址,yyy为文件的真实具有意义的文件名。
这种做法,主要是针对不同服务器上,不能直接通过磁盘盘符例如:D:/xx/xx.txt这种形式来构建File来进行下载。同时,生产系统,文件服务器万一更改了,到时候还需要直接修改代码,维护性不高;同时解决文件下载下来,得到的是有具体意义的文件名。
java修改网络上的文件_java下载网络文件并重命名相关推荐
- java下载网络文件_java下载网络文件的方法有哪些
下载网络文件的方法有:字节流下载 apache的FileUtils工具包下载 NIO下载 实现代码如下:package com.dsp.rpc.metricelf; import org.apache ...
- java压缩包加密上传,解密下载
java压缩包加密上传,解密下载 业务场景 供应商上传投标文件需要进行加密处理,通过链接下载时下载的时加密的文件,而通过系统内访问接口下载时,下载的是解密好的文件. 问题解决思路 1. 首先配置三个保 ...
- Linux命令行下载大文件,下载Onedrive文件
Linux命令行下载大文件,下载Onedrive文件 做深度学习实验时,经常会遇到下载数据集,下载到本地又上传到Linux服务器上,这时用rz上传会很慢,在网上找到一些方法,用curl下载One-dr ...
- 报表XML导出rtf格式,结果在浏览器中打开XML文件。下载rtf文件打开后出现Authentication failed 问题
报表XML导出rtf格式,结果在浏览器中打开XML文件.下载rtf文件打开后出现Authentication failed 问题 直接上问题图: 问题描述:在Oracle EBS中执行"资源 ...
- 文件流下载ppt文件无法打开或文件已损坏
在项目中遇到"文件流下载ppt文件无法打开或文件已损坏"这种情况,我也是查阅资料来一个排查问题的汇总 1.要设置responseType,在接口传参的时候传参过去 2.注意接口返回 ...
- java批量上传文件_Java 批量大文件上传下载
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = ...
- java 批量写入文件_Java批量写入文件和下载图片的示例代码
很久没有在WhitMe上写日记了,因为觉着在App上写私密日记的话肯定是不安全的,但是想把日记存下来.,然后看到有导出日记的功能,就把日记导出了(还好可以直接导出,不然就麻烦点).导出的是一个html ...
- java 导出excel打开报错_java导出excel文件报“失败-网络错误”
问题描述 用IP访问单个服务器去下载excel文件正常,访问F5去下载的时候报"失败-网络错误" 项目截图(必填) 运行截图(必填) 相关代码片段 response.reset() ...
- java file 下载文件_java下载文件的几种方式
public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的 ...
最新文章
- 干掉Navicat:这个IDEA的兄弟真香!
- win10应用商店打不开_电脑打不开exe程序|Win10提示exe不是有效32应用程序
- VC++ 绘制简单电子元件
- 计算机学校推荐专科,专科计算机专业学校推荐
- mysql innodb创建数据文件失败
- python安装第三方库
- 机器学习常见基本概念笔记
- 【APICloud系列|8】APICloud下载编译包安装,点击图标打不开,提示很抱歉,程序出现异常,即将退出
- js转json工具_菜鸟丨Egert3D微信小游戏发布与Unity工具使用
- JavaScript返回上一页代码区别
- sqlserver08评估期已过的解决方法
- shapenet数据集什么格式_网络中的链路层数据格式是什么样?6个知识点1张图给您说明白...
- Tcl Tutorial 笔记2 · set ““ {} [] \
- Java编程思想阅读收获
- 汇川plc c语言,汇川小型PLC梯形图编程教程(十):输入输出继电器X和Y元件及常开常闭触点介绍...
- Js中字符串转Json与Json对象转字符串
- atomikos 配置好后 @transactional 注解不生效的问题
- 软件测试,2019.2.15中移物联网面试心路历程。
- 目前有哪些高并发解决方案?
- 第四章 06 打印星号