本文實例為大家分享了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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。