vue实现axios图片上传功能
2019-08-20 11:51
831 查看
vue中实现图片上传,我这里使用的是FormData通过axios向后台发送请求,从而实现图片的上传。
在发起请求的axios中一般用qs进行序列化,但是序列化之后,FormData就传送失败,所以要区别传送的数据类型。
经过多次摸索总结了以下经验,以供参考。
首先创建一个文件夹services ,里面有两个文件 index.js 和 api.js。
我们的qs序列化和数据拦截写在index.js中
import axios from "axios"; import config from "@/config"; import router from "@/router"; import validate from "@/util/validate"; import Qs from "qs"; const request = axios.create({ baseURL: config.hostUrl, timeout: 52000, transformRequest: [ (data) => { return data instanceof FormData ? data : Qs.stringify({ //此处的data类型判断为重要点, ...data }); } ] }); request.interceptors.request.use( //请求拦截 config => { return config; }, error => Promise.error(error) ); request.interceptors.response.use(// 响应拦截器 async function (res) { if (res.status === 200) { return Promise.resolve(res.data); } else { return Promise.reject(res.data); } }, async function (error) { const { response } = error; if (response) { return Promise.reject(response); } else { } } ); export default request;
写好上面的代码在api.js 请求接口就无须做任何操作了,下面示例:
async upImgs(files) { // 我的相册图片上传 return (await request.post('/basis/uploadFile', files)).response },
页面调用接口
async file_up(event) { //图片预览 try { let res = null; this.file = [...event.target.files]; for (let i = 0, f; (f = this.file[i]); i++) { if (i >= 8 || this.imgs.length >= 8) { return; } let fileImg = new FormData(); fileImg.append("file", f); res = await this.$api.upImgs(fileImg); //这里是调用api处, 此处为多图上传,供参考 if (res.result) { this.imgs.push(res.result.absoluteFilePath); } } } catch (err) { this.$toast({ message: err.message, duration: 1200 }); } }
是不是很简单呀!反正我是实现了,有问题可以讨论下哦。
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- Vue2.0 引用 exif.js 实现调用摄像头进行拍照功能以及图片上传功能
- vue中利用simplemde实现markdown编辑器(增加图片上传功能)
- vue 实现剪裁图片并上传服务器功能
- vue实现压缩图片预览并上传功能(promise封装)
- vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
- 基于vue+ bootstrap实现图片上传图片展示功能
- vue.js 实现图片本地预览 裁剪 压缩 上传功能
- 使用axios实现上传图片进度条功能
- vue实现的上传图片到数据库并显示到页面功能示例
- vue实现的上传图片到数据库并显示到页面功能示例
- vue实现移动端图片裁剪上传功能
- vue-quill-editor实现图片上传功能
- vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
- vue 实现上传前图片压缩功能
- axios+Vue实现上传文件显示进度功能
- VUE + UEditor 单图片跨域上传功能的实现方法
- vue + qiniu(七牛) + axios 实现图片上传
- cropper js基于vue的图片裁剪上传功能的实现代码
- vue.js 图片上传并预览及图片更换功能的实现代码
- vue+elementUI实现表单和图片上传及验证功能示例