vue 文件转换二进制_Vue 文件上传后的diy操作及二进制流blob文件的下载[通俗易懂]

vue 文件转换二进制_Vue 文件上传后的diy操作及二进制流blob文件的下载[通俗易懂]文件上传部分1.文件的上传常规的文件上传是通过form表单包裹file类型的input标签进行上传,在form里面的属性中定义上传方式如post,上传地址url,或者通过如elementUI的upload模块进行一系列的上传操作.但很多时候我们并不需要用到那么多复杂功能,所以文件上传的本质应该只有两步:(1)将本地文件上传到浏览器端(2)将浏览器端的文件发送到对应api接口其他的额外操作可以由自己…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

文件上传部分

1.文件的上传

常规的文件上传是通过form表单包裹file类型的input标签进行上传,在form里面的属性中定义上传方式如post,上传地址url,或者通过如elementUI的upload模块进行一系列的上传操作.但很多时候我们并不需要用到那么多复杂功能,所以文件上传的本质应该只有两步:

(1)将本地文件上传到浏览器端

(2)将浏览器端的文件发送到对应api接口

其他的额外操作可以由自己定义.

2.具体代码

上传代码如下:

上传图片

@change=”getimg”

accept=”image/x-png, image/gif, image/jpeg, image/bmp”

class=”fileupload”

ref=”fileupload”

type=”file”

/>

upload() {

this.$refs.fileupload.dispatchEvent(new MouseEvent(‘click’))

},

file类型的input样式很丑而且很不好修改,一般的话对于其的样式优化是将input标签设置为display:none,用我们自定义的按钮或其他来绑定input的点击事件以完成上传的diy风格.

然后是获取上传文件在浏览器的地址:

getimg() {

let file = this.$refs.fileupload.files[0]

this.filename = file.name

let reader = new FileReader() //读取文件

reader.readAsDataURL(file)

let _this = this

reader.onload = function() {

_this.$refs.imgshow.src = reader.result

}

}

一般只有图片需要用到该功能来预览

发送api部分:

addWatermark() {

this.fullscreenLoading = true

let file = this.$refs.fileupload.files[0]

let param = new FormData()

// 将得到的文件流添加到FormData对象

param.append(‘file’, file, file.name)

this.$api.search.addWatermark(param).then()

}

文件上传之后本身并不能直接和一般的数据格式发过去,所以要放在formdata类里面才能达到和包裹在form里面传输一样的效果

注:传输文件是request里面的Content-Type属性一定要是: multipart/form-data

blob下载

很多时候我们从后端接口api拿到的文件类型往往是二进制流的文件,对于这个文件我们前端无法直接下载,所以要通过几步操作

1.请求接口是要告诉接口我请求的是blob类型:responseType: ‘blob’

如axios是这样的axios.post(/addWaterMark, params, { responseType: ‘blob’ });

2.收到请求回调时要对文件blob解析后下载

具体代码是:

if (res.status == 200) {

let blob = new Blob([res.data])

//将二进制流blob数据转化为js认识的blob对象

//有时还要加上类型判别如: let blob = new Blob([res.data], {

// type: ‘application/vnd.ms-excel’

//})

let downloadA = document.createElement(‘a’)

downloadA.download = ‘WM_’ + this.filename

//下载文件命名

downloadA.href = window.URL.createObjectURL(blob)

//获取下载路径

downloadA.click()

}

blob类型汇总

后缀 MIME Type

.doc application/msword

.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document

.xls application/vnd.ms-excel

.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

.ppt application/vnd.ms-powerpoint

.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170653.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于STC89C51/2的的超声波测距(1602A显示)「建议收藏」

    基于STC89C51/2的的超声波测距(1602A显示)「建议收藏」基于STC89C51/2的的超声波测距(1602A显示) 楼主在做学校单片机设计的时候为了测试超声波模块的功能与精度,动手DIY一款能用的超声波测距仪器,用1602液晶显示屏动态显示,精度在0.5cm左右,粗略测距,可用于避障,检测距离等的实际用途中。 我的超声波模块使用的是HC-SR04,板子使用的是STC89C52RC学习版(理论上51和52均可使 用)。得到距离之后可用于扩展功能,之后有空可以把我的经验分享出来,欢迎讨论。我的引脚接口如下ECHO=P2^4;

    2022年9月15日
  • JavaScript 中如何判断变量是否为数字

    JavaScript 中如何判断变量是否为数字简介JavaScript是一种动态类型语言,这意味着解释器在运行时确定变量的类型。实际上,这也允许我们在相同的代码中使用相同的变量来存储不同类型的数据。如果没有文档和一致性,我们在使用代码时并不总是知道变量的类型。当我们期望一个变量是数字时,对字符串或数组进行操作可能会在代码中导致奇怪的结果。在本文中,我们将会介绍一些判断变量是否为数字的函数。像”10″之类的数字的字符串不应被接受。在JavaScript中,诸如NaN,Infinity和-Infinity之类的特殊值也是数字类型的。根据这些要求,

    2022年6月22日
  • 我刚刚做了一个艰难的决定「建议收藏」

    我刚刚做了一个艰难的决定「建议收藏」腾讯做了个艰难的决定,如果您电脑里安装了360软件,建议您卸载了它在运行QQ~可口可乐做出了一个非常艰难的决定,如果检测到用户胃里有百事可乐,将自动释放敌敌畏和鹤顶红中国移动做出一个非常艰难的决定,如果方圆百米内检测到有联通用户将使这些用户不间断自动拨打110迅雷做出一个非常艰难的决定,如果检测到用户电脑内安装快车,将拒绝下载教育片宝马做出了一个非常艰难的决定,如果检测到用户使用过奔驰宝马刹车将自动失灵蒙牛做了个艰难的决定,如果监测到用户胃里有伊利牛奶,将自动释放三聚氰胺麦当劳做了个艰难的决定,如果监测

    2022年7月25日
  • java mutator,Java – 使用Accessor和Mutator方法「建议收藏」

    java mutator,Java – 使用Accessor和Mutator方法「建议收藏」Iamworkingonahomeworkassignment.Iamconfusedonhowitshouldbedone.Thequestionis:CreateaclasscalledIDCardthatcontainsaperson’sname,IDnumber,andthenameofafilecontainingt…

    2022年9月13日
  • 一脸懵逼学习Nginx及其安装,Tomcat的安装

    一脸懵逼学习Nginx及其安装,Tomcat的安装

    2022年3月8日
  • 三菱PLC FB块的创建与使用

    三菱PLC FB块的创建与使用三菱PLCFB块的创建与使用在PLC编写程序过程中经常遇到一些重复逻辑控制的梯形图,比如流水线控制,气缸报警等等,这时候可以使用FB块来便捷编程,减少工作量与出错率。本例创建一个简单的单控气缸异常报警的FB块。所需输入有:气缸输出,气缸工作位,气缸原位,复位。所需输出有:工作位异常,原位异常。1,创建FB块:鼠标右击FB管理:选择新建数据:填写数据名并确认:2,编辑局部标签:其中INPUT为输入,OUTPUT为输出。3,编辑F…

    2022年9月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号