js实现文件上传

js实现文件上传组件库用多了 那就来看看 js 原生

第一步 创建上传点击事件

 <input ref="file" type="file" name="" style="display: none" @change="onChange" /> type:属性值决定上传文件的类型 @change: input的值变化时触发 this.$refs.file.click(): 触发弹框,让其可以选择 选择好要上传的文件后,点击打开,于此就会触发@change事件 

第二步 处理接收的文件

 onChange() { // 获取上传后的文件信息 const file = this.$refs.file?.files[0]; // 获取到文件信息后,后边就是如何将文件信息上传到服务端 // 这里说明,要根据后端接口需求进行响应的传递 // 区别一,上传的是图片文件,后端接口需要的是base64格式的图片信息,此时需要将获取的file转成base64 // 区别二,后端接口需要formdata格式文件,此时就要将file转成formdata格式发送给后端 // 这里说明一下formdata格式上传 // url 接口地址全地址 this.uploadFile(file, url); } 

第三步 处理服务端上传

 uploadFile(file, url) { // 处理文件转换成formData格式 const formdata = new FormData(); // 这里只是基本设置,对应接口需求设置响应的类型属性值 formdata.set('file', file); formdata.set('Status', 0); // 接口调用 let xml = new XMLHttpRequest(); xml.open('POST', url, true) // 第三个值指定接口是否异步 // 设置请求头信息 xml.setRequestHeader(’token‘, token); // 监控上传进度 xml.upload.onprogress = this.onprogressEvent // 接口调用成功回调 xml.onload = this.onloadEvent // 接口调用失败处理 xml.onerror = this.onerrorEvent } onprogressEvent(e) { if (e.lengthComputable) { // 可以获取到实时的接口进度 this.realTimePercent = +parseInt((e.loaded / e.total) * 100); } } onloadEvent(e) { // 获取到接口调用成功后的返回数据 const res = JSON.parse(e.currentTarget.response); ... } onerrorEvent(e) { // 接口调用失败后的处理 。。。 } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • mysql insert into as_mysql insert into select使用方法详解

    mysql insert into as_mysql insert into select使用方法详解mysqlinsertintoselect使用方法详解2017-11-2215:47我们先来看看mysqlinsertintoselect的语法规则。INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name[,col_name]…)]SELECT…[ONDUPLICATEKEY…

    2022年7月15日
    20
  • qpst专用ROM包_专用播放器视频怎么激活成功教程

    qpst专用ROM包_专用播放器视频怎么激活成功教程经试验可以成功安装license,具体步骤如下:一、从HP官方网上下载QTP10.0并安装。二、安装成功后,在C:\ProgramFiles\CommonFiles\MercuryInteractive下创建文件夹:LicenseManager三、将激活成功教程工具mng-mpt82.ese复制到C:\ProgramFiles\HP\QuickTestProfessional\bi…

    2022年10月5日
    3
  • 微服务网关kong实战[通俗易懂]

    微服务网关kong实战[通俗易懂]   当前互联网特别是移动互联网,设备与平台之间的交互的基础是服务API接口。以API驱动的开发是团队之间最常用的协作方式,而作为交互的基石,API的准确性,完整性和及时性是影响开发效率的关键。在生产环境中,创建、发布、维护、监控和保护任意规模的API,接收和处理成千上万个并发API的调用,管理流量、授权和访问控制、监控以及API版本也是采用微服务架构所必须解决的问题。解决上述…

    2022年6月26日
    58
  • PHP实现删除数组中的特定元素

    PHP实现删除数组中的特定元素PHP实现删除数组中的特定元素

    2022年4月24日
    39
  • Java学习之Spring Boot入门

    Java学习之SpringBoot入门0x00前言学习完ssm的整合后,开始来学习SpringBoot,在前面学习Spring的时候会发现使用Spring开发中配置Spring的环境会非常的

    2021年12月12日
    57
  • oracle报未明确定义列_oracle视图创建

    oracle报未明确定义列_oracle视图创建报这个错误的原因在于选出的结果集中包含相同的字段,数据库不知道应该以哪个字段为准。selectU.*from(selectq.jslongitude_gpsas**gpslatitude**,q.jslatitude_gpsas**gpslatitude**,q.jslongitude_amapaslontitude,q.jslatitude_amapasla

    2022年9月27日
    3

发表回复

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

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