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是指欲下载的 ...
最新文章
- ICML2020 | G2Gs:不依赖模板的的逆合成预测新框架
- vue中使用promise
- 【PP操作手册】计划订单转生产订单
- HDFS重复上传文件将会覆盖原文件
- 为什么Android Geeks购买Nexus设备
- SVD++:推荐系统的基于矩阵分解的协同过滤算法的提高
- Oracle IMP数据时报20001错误
- 简用计算机,你真的会使用“计算器”吗?
- vba odbc 3704 mysql_[求助]ado对象调用存储过程运行时错误3704
- swift 将图片资源打包成Bundle
- chrome插件开发入门-保姆级攻略
- 从零开始一个cli脚手架并发布到NPM(上篇)
- windows资源监视器
- TFIDF之python实现
- PS制作水彩效果头像
- 计算机求和怎样操作,电脑求和怎么操作
- 51单片机小白零基础教程——独立键盘检测原理以及实际应用
- 简述观察法的优缺点_各种观察法的优缺点
- 均方误差损失函数(MSE,mean squared error)
- Java 获取本机局域网内IP