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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 电信千兆光猫桥接降速_电信光猫改成桥接模式iptv怎么办

    电信千兆光猫桥接降速_电信光猫改成桥接模式iptv怎么办本帖最后由wsycqyz于2015-12-313:30编辑0.背景最近升级换了上海电信50M套餐,送中兴B860A4KIPTV机顶盒,光猫为中兴F420,电信施工完毕后,光猫的3、4口为IPTV接口,同时这两个接口也可以用来接普通的电脑上网。做为一名具备CCIE证书的网络攻城狮,不能使用自己的路由器拨号是完全无法忍受的,所以自己动手,有了此文。原理上,说白了,就是IPTV开机,拿到一…

    2022年10月8日
    0
  • 研究学习之java使用selenium教程[通俗易懂]

    研究学习之java使用selenium教程[通俗易懂]提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

    2022年6月28日
    35
  • [CTO札记]BlogBus机房搬迁居然在白天,而且要1天!

    [CTO札记]BlogBus机房搬迁居然在白天,而且要1天!

    2021年7月31日
    55
  • Java学习路线图[通俗易懂]

    Java学习路线图[通俗易懂]一、Java学习路线图   二、Java学习路线图——视频篇 六大阶段学完后目标知识点配套免费资源(视频+笔记+源码+模板)密码     第一阶段Java基础 入门学习周期:35天学完后目标:1.可进行小型应用程序开

    2022年5月13日
    56
  • Linux下七种文件类型、文件属性及其查看方法

    Linux下七种文件类型、文件属性及其查看方法1、七种文件类型普通文件类型Linux中最多的一种文件类型,包括纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为[-]目录文件就是目录,能用#cd命令进入的。第一个属性为[d],例如[drwxrwxrwx]块设备文件块设备文件:就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号

    2022年5月15日
    40
  • scrapy爬虫部署服务器「建议收藏」

    scrapy爬虫部署服务器「建议收藏」scrapy爬虫部部署服务器时间:2020年5月27日18:28:30作者:钟健记录:scrapy爬虫关键字:scrapyscrapydscrapydweb一、scrapy爬虫部署服务器scrapy通过命令行运行一般只用于测试环境,而用于运用在生产环境则一般都部署在服务器中进行远程操作。scrapy部署服务器有一套完整的开源项目:scrapy+scrapyd(服务端)+scrapy-client(客户端)+scrapydweb1、scrapyd1.介绍Scrapyd是用于部署和运

    2022年6月18日
    26

发表回复

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

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