vue上传图片文件的多种实现方法

 更新时间:2021年05月14日 10:40:44   作者:嘿起屁儿整  
这篇文章主要给大家介绍了关于vue上传图片文件的相关资料,介绍了利用原始input标签form表单上传、elementui自带的el-upload上传以及elementui实现一次性上传多张图片等方法,需要的朋友可以参考下

最开始百度到各种加headers,最后发现没什么用,有大兄弟知道的可以告知一下哦,记个随笔

原始input标签form表单上传

<input type="file" @change="onchangemd">

methods: {
 	onchangemd(e){
		console.log(e.target.files)//这个就是选中文件信息
		let formdata = new FormData()
		Array.from(e.target.files).map(item => {
         console.log(item)
         formdata.append("file", item)  //将每一个文件图片都加进formdata
       })
       axios.post("接口地址", formdata).then(res => { console.log(res) })
	}
 }

当看到二进制提交数据,就成功了(binary)


这种也是成功的(是二进制的展开数据。因为有些浏览器不显示binary)

上图可以看出 传统上传文件是以二进制的格式formdata格式提交

用elementui自带的el-upload上传

<el-upload action="" :on-change="handleelchange"  :auto-upload="false" list-type="picture-card">
     <i class="el-icon-plus"></i>
</el-upload>

 handleelchange(file, fileList) {
      console.log(file, fileList)
      let formdata = new FormData()
      fileList.map(item => { //fileList本来就是数组,就不用转为真数组了
        formdata.append("file", item.raw)  //将每一个文件图片都加进formdata
      })
       axios.post("接口地址", formdata).then(res => { console.log(res) })
    },

不用设置请求头等(直接用FormData格式提交就行),当看到formdata数据为二进制就说明提交正常(binary),同样有些浏览器不显示binary,以------WebKitFormBoundaryXoZpi2juymcNoW0l 开头的这种也是提交正常的

注意fileList数组中的raw才是真实文件数据,如果直接用item而不是item.raw,那么会报500错误,并且formdata中的数据不是二进制而是对象格式

fileList.map(item => {
formdata.append(“file”, item) //错误实例。要用item.raw
})


 elementui

elementui实现一次性上传多张图片

注意: 管用思维,点击提交然后触发表单提交事件,然后表单提交事件中发起请求。

结果: 上传每张图片都需要发起请求,即会发起多次请求

处理: 在submit阶段(即this.$refs.xxx.submit() 这步就发起请求),在提交函数中仅仅只进行图片获取

多张图片上传最后一个注意点: 多张图片的这个file不能写死,formdata.append(“file”, item) ,写为每张图片的指定name,不然会覆盖。

<el-upload ref="elupload" action="" multiple :auto-upload="false" :http-request="handleupload"  list-type="picture-card">
	<i class="el-icon-plus"></i>
</el-upload>
<button @click="uploadelupload">点击提交</button>

methods:{
	uploadelupload() {
      let formdata = new FormData()
      this.$refs.elupload.submit(); // 这里是执行文件上传的函数,其实也就是获取我们要上传的文件  
      this.fileList.forEach(item => {
        formdata.append("file", item)  //将每一个文件图片都加进formdata
      })
      formdata.append("score", 4)
      axios.post("接口地址", formdata).then(res => { console.log(res) })
    },
    handleupload(param) {
      this.fileList.push(param.file);// 一般情况下是在这里创建FormData对象,但我们需要上传多个文件,为避免发送多次请求,因此在这里只进行文件的获取,param可以拿到文件上传的所有信息
    },
}

elementui提交图片以及其他数据

  • 后端让传图片、以及其他数据。
  • 注意图片文件等:必须使用formdata传过去
  • 其他数据等:用普通方式传递
代码与上述大体相同、这里就只写axios请求格式
let formdata = new FormData()
formdata.append("file", item)  //将每一个文件图片都
axios({
	method: "post",
 	url: "接口地址",
	data: formdata,
 	params: { score: 4, content: "xxxxx", order_detail_id: 24, token: "xxxx" }
}).then(res => { console.log(res) })

总结

到此这篇关于vue上传图片文件的文章就介绍到这了,更多相关vue上传图片文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue+element 分页封装的实现示例

    vue+element 分页封装的实现示例

    本文主要介绍了vue+element 分页封装的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Vue项目实现文件下载进度条功能

    Vue项目实现文件下载进度条功能

    大文件下载,花费的时间比较长,没有任何提示,用户体验很差,需要优化,提示文件在下载中,并且显示进度百分比,下面小编给大家带来了Vue项目实现文件下载进度条功能,感兴趣的朋友一起看看吧
    2024-03-03
  • element ui table 增加筛选的方法示例

    element ui table 增加筛选的方法示例

    这篇文章主要介绍了element ui table 增加筛选的方法示例,详细的介绍了如何添加规则内容,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 详解vue中v-on事件监听指令的基本用法

    详解vue中v-on事件监听指令的基本用法

    这篇文章主要介绍了详解vue中v-on事件监听指令的基本用法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Vue 实现复制功能,不需要任何结构内容直接复制方式

    Vue 实现复制功能,不需要任何结构内容直接复制方式

    今天小编就为大家分享一篇Vue 实现复制功能,不需要任何结构内容直接复制方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能

    基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能

    本文讲述的是从开发一款基于Vue2x的响应式自适应轮播组件插件的一个全过程,包含发布到npm,构建自己的npm包,供下载安装使用的技巧,非常不错,具有一定的参考借鉴价值,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-05-05
  • 详解Axios统一错误处理与后置

    详解Axios统一错误处理与后置

    这篇文章主要介绍了详解Axios统一错误处理与后置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Vue Object.defineProperty及ProxyVue实现双向数据绑定

    Vue Object.defineProperty及ProxyVue实现双向数据绑定

    这篇文章主要介绍了Vue Object.defineProperty及ProxyVue实现双向数据绑定,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • vue+elementui(对话框中form表单的reset问题)

    vue+elementui(对话框中form表单的reset问题)

    这篇文章主要介绍了vue+elementui(对话框中form表单的reset问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • vuex中使用modules时遇到的坑及问题

    vuex中使用modules时遇到的坑及问题

    这篇文章主要介绍了vuex中使用modules时遇到的坑及问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08

最新评论