最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

vue实现axios图片上传功能

来源:动视网 责编:小采 时间:2020-11-27 21:52:13
文档

vue实现axios图片上传功能

vue实现axios图片上传功能:vue中实现图片上传,我这里使用的是FormData通过axios向后台发送请求,从而实现图片的上传。 在发起请求的axios中一般用qs进行序列化,但是序列化之后,FormData就传送失败,所以要区别传送的数据类型。 经过多次摸索总结了以下经验,以供参考。 首先创建一
推荐度:
导读vue实现axios图片上传功能:vue中实现图片上传,我这里使用的是FormData通过axios向后台发送请求,从而实现图片的上传。 在发起请求的axios中一般用qs进行序列化,但是序列化之后,FormData就传送失败,所以要区别传送的数据类型。 经过多次摸索总结了以下经验,以供参考。 首先创建一


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
 });
 }
 }

是不是很简单呀!反正我是实现了,有问题可以讨论下哦。

文档

vue实现axios图片上传功能

vue实现axios图片上传功能:vue中实现图片上传,我这里使用的是FormData通过axios向后台发送请求,从而实现图片的上传。 在发起请求的axios中一般用qs进行序列化,但是序列化之后,FormData就传送失败,所以要区别传送的数据类型。 经过多次摸索总结了以下经验,以供参考。 首先创建一
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top