Vue formData实现图片上传


Posted in Javascript onAugust 20, 2019

本文实例为大家分享了Vue formData实现图片上传的具体代码,供大家参考,具体内容如下

import Vue from 'vue'
 
/**
 * 图片上传
 * 已注入所有Vue实例,
 * template模板里调用 $uploadFile(id)
 * 组件方法里调用 this.$uploadFile(id)
 */
const uploadFile = (id) => {
 let promise = new Promise((resolve, reject) => {
  let file = null
  let el = null
  let i = 0
  let formData = new FormData()
  document.getElementById(id).click()
  el = document.getElementById(id)
  el.addEventListener('change', function (e) {
   i++
   if (i !== 1) {
    return false
   } else {
    file = this.files[0]
    formData.append('file', file)
    formData.append('fileType', 'IMAGE')
    // 数据请求
    Vue.axiosfrom(Vue.api.upload, formData).then(res => {
     // 返回图片url
     resolve(res)
    }).catch(err => {
     reject(err)
    })
   }
  })
 })
 return promise
}
 
Vue.prototype.$uploadFile = uploadFile

axios请求头设置

import Vue from 'vue'
import { baseURL } from '@/config/env'
import axios from 'axios'
 
// formdata 请求
const axiosT = axios.create({
 baseURL: baseURL,
 headers: {
  'Content-Type': 'multipart/form-data'
 }
})
 
const XHR = ({method = 'post', qs = true, loading = false, loginRequire = true, reqComplex = false, reqContentType = 'urlencoded'}) => {
 // 带请求进度条成功方法
 const sucFunX = res => {
  return res.data
 }
 // 成功执行方法
 const sucFunC = res => {
  return res.data
 }
 // 带请求进度条失败方法
 const errFunX = err => {
  console.log(err, NProgress.done())
 }
 // 失败执行访求
 const errFunC = err => {
  console.log(err)
 }
 // 判断是否需要Longing
 const sucFun = loading ? sucFunX : sucFunC
 // 判断是否需要Longing
 const errFun = loading ? errFunX : errFunC
 return {user, sucFun, errFun}
}
 
// 表单请求 图片上传
const axiosfrom = function (url = '', data = {}) {
 let {sucFun, errFun} = XHR({loading: false})
 return axiosT.post(url, data).then(sucFun).catch(errFun)
}
// 表单请求
Vue.prototype.$axiosfrom = axiosfrom
Vue.axiosfrom = axiosfrom

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用javascript实现有效时间的控制,并显示将要过期的时间
Jan 02 Javascript
在myeclipse中如何加入jquery代码提示功能
Jun 03 Javascript
JavaScript获取按钮所在form表单id的方法
Apr 02 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
May 05 Javascript
Jquery元素追加和删除的实现方法
May 24 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
Aug 31 Javascript
jquery实现页面加载效果
Feb 21 Javascript
Angular2入门教程之模块和组件详解
May 28 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
浅谈如何使用webpack构建多页面应用
May 30 Javascript
vue-cli3中vue.config.js配置教程详解
May 29 Javascript
vue中的v-if和v-show的区别详解
Sep 01 Javascript
Angular8 Http拦截器简单使用教程
Aug 20 #Javascript
vue实现axios图片上传功能
Aug 20 #Javascript
扫微信小程序码实现网站登陆实现解析
Aug 20 #Javascript
vue+element-ui+axios实现图片上传
Aug 20 #Javascript
vue element upload实现图片本地预览
Aug 20 #Javascript
JS中的算法与数据结构之集合(Set)实例详解
Aug 20 #Javascript
Vue + Element UI图片上传控件使用详解
Aug 20 #Javascript
You might like
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
PHP通用检测函数集合
2006/11/25 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
python每次处理固定个数的字符的方法总结
2013/01/29 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
python环境下安装opencv库的方法
2020/03/05 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
信息员培训方案
2014/06/12 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
教师读书笔记
2015/06/29 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python