文件下载,通过也是可以的,但是这样直接下载,一般文件名就是服务器端的没有任何意义的文件名。

今天自己用到了另外一种,先说需求: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下载网络文件并重命名相关推荐

  1. java下载网络文件_java下载网络文件的方法有哪些

    下载网络文件的方法有:字节流下载 apache的FileUtils工具包下载 NIO下载 实现代码如下:package com.dsp.rpc.metricelf; import org.apache ...

  2. java压缩包加密上传,解密下载

    java压缩包加密上传,解密下载 业务场景 供应商上传投标文件需要进行加密处理,通过链接下载时下载的时加密的文件,而通过系统内访问接口下载时,下载的是解密好的文件. 问题解决思路 1. 首先配置三个保 ...

  3. Linux命令行下载大文件,下载Onedrive文件

    Linux命令行下载大文件,下载Onedrive文件 做深度学习实验时,经常会遇到下载数据集,下载到本地又上传到Linux服务器上,这时用rz上传会很慢,在网上找到一些方法,用curl下载One-dr ...

  4. 报表XML导出rtf格式,结果在浏览器中打开XML文件。下载rtf文件打开后出现Authentication failed 问题

    报表XML导出rtf格式,结果在浏览器中打开XML文件.下载rtf文件打开后出现Authentication failed 问题 直接上问题图: 问题描述:在Oracle EBS中执行"资源 ...

  5. 文件流下载ppt文件无法打开或文件已损坏

    在项目中遇到"文件流下载ppt文件无法打开或文件已损坏"这种情况,我也是查阅资料来一个排查问题的汇总 1.要设置responseType,在接口传参的时候传参过去 2.注意接口返回 ...

  6. java批量上传文件_Java 批量大文件上传下载

    第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname =  ...

  7. java 批量写入文件_Java批量写入文件和下载图片的示例代码

    很久没有在WhitMe上写日记了,因为觉着在App上写私密日记的话肯定是不安全的,但是想把日记存下来.,然后看到有导出日记的功能,就把日记导出了(还好可以直接导出,不然就麻烦点).导出的是一个html ...

  8. java 导出excel打开报错_java导出excel文件报“失败-网络错误”

    问题描述 用IP访问单个服务器去下载excel文件正常,访问F5去下载的时候报"失败-网络错误" 项目截图(必填) 运行截图(必填) 相关代码片段 response.reset() ...

  9. java file 下载文件_java下载文件的几种方式

    public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的 ...

最新文章

  1. 干掉Navicat:这个IDEA的兄弟真香!
  2. win10应用商店打不开_电脑打不开exe程序|Win10提示exe不是有效32应用程序
  3. VC++ 绘制简单电子元件
  4. 计算机学校推荐专科,专科计算机专业学校推荐
  5. mysql innodb创建数据文件失败
  6. python安装第三方库
  7. 机器学习常见基本概念笔记
  8. 【APICloud系列|8】APICloud下载编译包安装,点击图标打不开,提示很抱歉,程序出现异常,即将退出
  9. js转json工具_菜鸟丨Egert3D微信小游戏发布与Unity工具使用
  10. JavaScript返回上一页代码区别
  11. sqlserver08评估期已过的解决方法
  12. shapenet数据集什么格式_网络中的链路层数据格式是什么样?6个知识点1张图给您说明白...
  13. Tcl Tutorial 笔记2 · set ““ {} [] \
  14. Java编程思想阅读收获
  15. 汇川plc c语言,汇川小型PLC梯形图编程教程(十):输入输出继电器X和Y元件及常开常闭触点介绍...
  16. Js中字符串转Json与Json对象转字符串
  17. atomikos 配置好后 @transactional 注解不生效的问题
  18. 软件测试,2019.2.15中移物联网面试心路历程。
  19. 目前有哪些高并发解决方案?
  20. 第四章 06 打印星号

热门文章

  1. esdump离线安装
  2. PAT | 1011 A+B 和 C(分数 15)
  3. 财付通 第三方支付 即时到帐支付接口
  4. ZZULIOJ--探姬环游世界
  5. QVariant保存指针
  6. UI设计全家桶,0基础小白必收藏系列
  7. 如何查看sqlyog的历史记录
  8. 接收方带宽估计的RTCP消息 REMB
  9. 【单片机仿真项目】 外部中断0控制发光二极管亮灭
  10. 基于vue 实现 excel导出导入功能