首页 > 其他分享 >vue处理文件流实现上传下载

vue处理文件流实现上传下载

时间:2023-10-26 18:35:34浏览次数:41  
标签:文件 vue let res 上传下载 link blob new

1.文件流转base64
axios({
method: "post",
url: "************",
responseType: "blob", //必须将返回数据格式更改为 blob 格式
}).then(res => {
// 处理返回的文件流数据转为blob对象
let blob = new Blob([res.data], { type: "image/jpeg" });
filetoBase64(blob).then(res => {
//此时的 res 是返回处理后文件的base64编码
this.avatarImg = res;
});
});


//文件转 base64
export const filetoBase64 = file => {
let reader = new FileReader(); //实例化文件读取对象
reader.readAsDataURL(file); //将文件读取为 DataURL,也就是base64编码
return new Promise((reslove, reject) => {
reader.onload = e => {
//文件读取成功完成时触发
let dataURL = e.target.result; //获得文件读取成功后的DataURL,也就是base64编码
reslove(dataURL);
};
});
};


2.文件下载
// (1)利用window.open("文件地址")
windows.open()
// (2)利用 a 标签
const link = document.createElement('a');
const blob = new Blob([res.data]);
link.style.display = 'none';
link.href = URL.createObjectURL(blob);
link.download = "这是文件名";//设置下载文件名
document.body.appendChild(link);
link.click();
URL.revokeObjectURL(blob) //释放URL

3.文件上传
<input type="file" class="fileInp" style="display:none" @change="fileChange" />

fileChange(event) {
let file = event.target.files[0]; //获取上传的文件
let forms = new FormData() //创建表单对象,因为文件上传必须以表单形式上传
forms.append('multipartFile', file) //追加上传的文件
forms.append('name','xiaoming' ) //其他附加的数据
axios({
url: process.env.VUE_APP_BASE_API + "/OfficeWorkerMng/BapMember/uploadLrm",
method: "post",
data: forms,
}).then(res => {
this.$message.success("上传成功");
})
},

参考文章:http://blog.ncmem.com/wordpress/2023/10/26/vue%e5%a4%84%e7%90%86%e6%96%87%e4%bb%b6%e6%b5%81%e5%ae%9e%e7%8e%b0%e4%b8%8a%e4%bc%a0%e4%b8%8b%e8%bd%bd/

欢迎入群一起讨论

 

 

标签:文件,vue,let,res,上传下载,link,blob,new
From: https://www.cnblogs.com/songsu/p/17790070.html

相关文章

  • 问题:vue3 使用 vite 构建的项目打包后无法打开index.html文件,或者显示一片空白
    一、问题描述项目build之后,点击dist文件中的index.html文件,打开是空白,提示以下信息。二、产生原因及解决方法1.文件路径不对vite默认根目录"/",file://…访问需要基于index.html的路径,需要再vit.config.js中进行以下配置2.跨域问题vite构建打包后,默认启用ESModule,跨module......
  • 前后端分离 Spring boot项目 后端依赖文件
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/......
  • vue中实现上传 ,下载功能
    上传功能(包括上传图片,上传文件)使用element组件库https://element.eleme.cn/#/zh-CN/component/upload<el-upload class="avatar-uploader":disabled="isUpload"action="":show-file-list="false":before-upload="beforeUplo......
  • Vue3 子组件修改父组件传过来的值
    Vue3子组件修改父组件传过来的值1、在父组件中,找到引用的子组件,在引用中加入v-model例如:子组件是demo,需要穿的值为num这个有个温馨提示,(v-model+冒号+需要穿的值)这个v-model可以写多个<demov-model:num="num"></demo>//例如可以写多个需要修改多个传入的值<demov-mo......
  • 卸载wps之后office文件图标变白和默认打开软件改不了问题
    (3封私信/23条消息)卸载WPS后,桌面office文件图标变白,如何解决?-知乎(zhihu.com)  修复好之后就行,win11亲测可用......
  • java如何从Content-Disposition获取文件名的正则表达式
    一,主要是关于:post请求下载文件,如何从Content-Disposition获取文件名的正则表达式记录:HttpResponsehttpResponse=httpRequest.execute();byte[]bytes=httpResponse.bodyBytes();Stringheader=httpResponse.header("Content-Disposition")......
  • Vue localStorage 将数据存为数组
    VuelocalStorage将数据存为数组要把表单数据存成数组形式,在另一个页面通过v-for渲染展示,因为拥有同一个key值,在每次更新表单数据时都会发生数据覆盖现象。vartemplist=JSON.parse(localStorage.getItem("msgBody")||"[]");templist.push(this.msgBody);......
  • Windows文件夹加密
    第一步:创建加密文件电脑本地新建一个文件,把后缀修改为.bat,右键编辑这个文件,将以下代码拷贝进去并保存:   @echooff::关掉无关显示chcp65001CLS::清除屏幕闲杂信息titlelocktool::命名批处理标题ifEXIST"ControlPanel.{21EC2020-3AEA-1069-A2DD-08002B30309D......
  • mht文件图片提取 python
    简介mhtml文件又称为聚合html文档、web档案或单一文件网页。单个文件网页可将网站的所有元素(包括文本和图形)都保存到单个文件中。总的来说mht文件保存了一个网页内的所有元素,让用户可以在没有网络的情况下访问网页。本程序提取mht文件中的图片并保存至新建文件夹,同时将其压缩。......
  • vue学习笔记之执行顺序
       vue文件加载顺序:index.html>app.vue>main.js     加载顺序详情:执行index.html(index.html中id为app的div标签是一个挂载点,之后我们的Vue根实例就会挂载到该挂载点上)执行main.jsmain.js找到实例挂载app.vue文件,将index.html的挂载的内容显示出来(用app.vue的template......