【JavaScript源代码】Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)

Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法 我测试过很多遍,想要通过a标签的形式来直接点击url下载文件并重命名但是都失败了,最终只能下载却不能重命名 所以 换了java后台来修改名字.以下代码 我做的网页是点击文件直接下载 直接下载下来了,一开始的文件名是上传到oss时以id命名的名字,现在下载的时候想改名,遇到了问题,所以写了这篇博客 首先是后台代码 /** * 附件下载 * <p> * * @param param * @return ResponseDTO */ @PostMapping(value = "/do 在本文档中,我们探讨了如何在Vue.js应用中通过阿里云OSS(Object Storage Service)的URL直接下载文件,并在下载过程中修改文件名。在尝试通过HTML的`<a>`标签直接设置`download`属性来实现重命名失败后,作者选择了通过Java后台处理的方式来解决这个问题。 我们需要了解Vue.js部分的代码。Vue组件中有一个`handlePreview`方法,它负责处理文件的下载。当用户点击某个非图片类型的文件时,这个方法会被触发。它创建了一个隐藏的表单,将文件的URL和名称作为表单字段添加进去,并提交表单到指定的后台接口。这确保了文件的下载请求包含了所需的文件名信息: ```javascript handlePreview(file) { if (file.type == 'png' || file.type == 'jpg') { // 处理图片预览逻辑... } else { var form = document.createElement("form"); document.body.appendChild(form); form.method = "post"; form.appendChild(this.generateHideElement('url', file.url)); form.appendChild(this.generateHideElement('name', file.name)); form.action = "接口地址"; // 路由地址+接口地址 form.submit(); } }, generateHideElement(name, value) { var tempInput = document.createElement("input"); tempInput.type = "hidden"; tempInput.name = name; tempInput.value = value; return tempInput; } ``` 在Java后台,我们有对应的接口处理这个下载请求。这里有一个`@PostMapping`注解的`downloadFile`方法,它接收一个包含文件URL和名称的Map参数,并返回一个ResponseDTO。这个方法首先从URL中获取输入流,然后设置HTTP响应的类型为原始内容的MIME类型。接下来,它使用`Content-Disposition`头来指定附件的文件名,这个文件名是通过URL编码的,确保了跨平台兼容性: ```java @PostMapping(value = "/download") public void downloadFile(@RequestParam Map<String, Object> param, HttpServletResponse response) throws Exception { String url1 = param.get("url").toString(); URL url = new URL(url1); URLConnection conn = url.openConnection(); InputStream inputStream = conn.getInputStream(); response.reset(); response.setContentType(conn.getContentType()); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(param.get("name").toString(), "UTF-8")); byte[] buffer = new byte[1024]; int len; OutputStream outputStream = response.getOutputStream(); while ((len = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, len); } inputStream.close(); } ``` 这段代码的关键在于`Content-Disposition`头的设置,它告诉浏览器应当将响应作为附件下载,并指定文件的预期名称。通过这种方式,阿里云OSS上的文件可以在被下载时被赋予一个新的名字。 总结一下,这个解决方案涉及到了前端Vue.js和后端Java的协同工作。前端通过创建并提交表单将文件名和URL传递给后台,而后台则负责处理实际的文件下载,包括设置正确的HTTP响应头来指定新的文件名。这个方法有效地解决了通过URL直接下载文件并重命名的问题,尤其适用于阿里云OSS这样的云存储服务。


























- 粉丝: 1w+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 三菱PLC可编程控制器概况.docx
- 广电网络公司工程验收实施细则.doc
- 2022年通信系统应急预案及故障处理措施.doc
- 网络营销计划书.pptx
- 企业具备信息化管理平台能够使工程管理者对现场实施监控与数据处理76809.pdf
- 基于时间序列和神经网络的股票预测分析.doc
- 项目管理5大过程组ITTO.pdf
- 计算机科学引论答案.doc
- 文秘及办公自动化毕业设计参考选题剖析.doc
- 电子商务题期末复习试题.doc
- 新航管理软件针对客户保持型提出的解决方案二PPT课件.ppt
- 装饰装修工程项目管理流程.doc
- 中国电信政企支持网络部年终总结汇报及工作计划.doc
- 网络营销试题-.doc
- 网站制作明细报价表.doc
- 网络安全检查工作报告.doc



- 1
- 2
- 3
前往页