Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法


Posted in Vue.js onDecember 25, 2020

我测试过很多遍,想要通过a标签的形式来直接点击url下载文件并重命名但是都失败了,最终只能下载却不能重命名 所以 换了java后台来修改名字.以下代码

Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法

我做的网页是点击文件直接下载

Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法

直接下载下来了,一开始的文件名是上传到oss时以id命名的名字,现在下载的时候想改名,遇到了问题,所以写了这篇博客

首先是后台代码

Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法

/**
  * 附件下载
  * <p>
  *
  * @param param
  * @return ResponseDTO
  */
 @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());
   //纯下载方式 文件名应该编码成UTF-8
  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();
 }

代码里面的 url 需要事先 去阿里云获取,我因为前端上传的时候 获取到了url就直接传到后台用了.

前端vue代码

Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法

//下载和预览
  handlePreview(file) {
  if (file.type == 'png' || file.type == 'jpg') {
   this.imageUrl = file.url;
   this.imageDetail = true;
  } 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;
  },

好了这就完了,很简单的一段代码, 我也是刚学vue欢迎大佬指点

到此这篇关于Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法的文章就介绍到这了,更多相关vue 阿里云oss下载文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
Vue组件生命周期运行原理解析
Nov 25 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
VUE解决跨域问题Access to XMLHttpRequest at
May 06 Vue.js
vue实现登陆页面开发实践
May 30 Vue.js
vue使用require.context实现动态注册路由
Dec 25 #Vue.js
vue 使用rules对表单字段进行校验的步骤
Dec 25 #Vue.js
vue 实现基础组件的自动化全局注册
Dec 25 #Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 #Vue.js
基于vue+echarts数据可视化大屏展示的实现
Dec 25 #Vue.js
vue3使用vue-count-to组件的实现
Dec 25 #Vue.js
vue+openlayers绘制省市边界线
Dec 24 #Vue.js
You might like
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
js tab 选项卡
2009/04/26 Javascript
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python实现朴素贝叶斯分类器
2018/03/28 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
班干部演讲稿
2014/04/24 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
2016年寒假见闻
2015/10/10 职场文书
Python中使用ipython的详细教程
2021/06/22 Python
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
MySQL数据库事务的四大特性
2022/04/20 MySQL