前端JS下载文件重命名与后端Java代理方案
作者:百宝袋时间:2026-10-22 03:54:28浏览:146
前端使用HTML5的download属性可直接下载文件,但无法修改文件名。本文介绍通过Java后端代理请求,获取文件流后动态设置Content-Disposition头,从而实现前端调用时指定新文件名的完整方案。
前端JS下载与重命名限制
在前端实现文件下载功能,可以直接利用HTML5的<a>标签,并为其添加download属性即可完成基础下载操作。
var a = document.createElement("a");
a.href = "http://XXX.com/audioStream/8a9dbae9d0859e48fc1f590fcf6d4ccc.mp3";
a.download ="test.mp3";
a.click();
然而,若需要在下载过程中对文件进行重命名,仅靠前端JavaScript通常无法直接实现该功能。
为此,可以采用后端代理的方式来解决。具体做法是利用Java后台发起HTTP请求获取目标文件,在返回前端时通过响应头设置文件名,从而将带有新名称的文件流传递给用户。
Java后端代理实现文件重命名
public void downFiles(HttpServletResponse response,String url,String workInfoId,int type){
try{
String prefix = type == 1 ? "wav" : "txt";
url = type == 1 ? url : (url + "?textInfoId="+workInfoId);
HttpEntity entity = Request.Get(url).
execute().returnResponse().getEntity();
byte[] bys = EntityUtils.toByteArray(entity);
//获取作品名称
Works works = this.worksDao.findByWorkId(workInfoId);
String name = (works!=null && StringUtils.isNotBlank(works.getName())) ? works.getName() : Long.toString(new Date().getTime());
response.setHeader("Content-Disposition", "attachment; filename="+ new String(name.getBytes("utf-8"), "ISO-8859-1")+"."+prefix);
OutputStream out = response.getOutputStream();
out.write(bys);
out.close();
}catch (Exception e){
e.printStackTrace();
}
}
上述内容涵盖了前端限制与后端解决方案的核心逻辑,旨在为相关开发需求提供参考。
作者最新文章
定制 Quill.js 主题样式:修改默认 CSS 与添加自定义类名
2026-11-04 11:21:35
混淆JS代码怎么在线反混淆并格式化阅读
2026-11-03 21:46:39
JS在线编辑器代码报错怎么调试?控制台使用技巧
2026-11-03 21:24:56
从 marked.js 旧版本升级到最新版:API 变更与迁移指南
2026-11-03 17:38:17
JS富文本编辑器Quill与代码编辑器CodeMirror的区别及应用场景
2026-11-03 16:52:09
