vue项目使用axios+element-ui的upload组件实现文件上传功能

1 <el-upload 2    class="avatar-uploader"
3  action 4    name="file1"
5    :show-file-list="false"
6    :http-request="uploadImg" 
7 >
8   <div class="upload-btn">上传</div>
9 </el-upload>
:http-request="uploadImg" 为重写的上传方法
uploadImg(fileObj) { let formData = new FormData(); formData.set("file", fileObj.file); axios .post('接口地址', formData, { headers: { "Content-type": "multipart/form-data" } }).then().catch();

首先建立一个空的文件对象,let formData = new FormData();ios

而后经过 set 方法,把获取到的图片/文件,装入文件对象中;axios

而后设置请求头;api

 1 //POST传参序列化
 2 axios.interceptors.request.use(  3   config => {  4     console.log(config, "request");  5     if (config.method === "post") {  6       let curPost = config.url.split("/")[config.url.split("/").length - 1];  7       if (curPost === "uploadpicture" || curPost === "uploadfile") {  8         return config; // 这里对上传文件/图片的 api 不作传参序列化处理
 9       } else { 10         config.data = qs.stringify(config.data); 11         return config; 12  } 13  } 14     return config; 15  }, 16   error => { 17     return Promise.reject(error); 18  } 19 );

最重要的一步:post

传参不能序列化,不然传递的就不是文件(file),致使上传没法成功。url

相关文章
相关标签/搜索