Bootstrap

el-upload设置请求头header失败解决办法

我们在使用element的upload有时候需要上传token 官网也为我们提供一个方法

我们也可以直接使用 




<el-upload ref="upload" action="localhoet/unload" :file-list="fileList" list-type="picture" :limit="2" :on-change="handleChangePicture" :on-success="handleSuccess" :headers="headerObj">
     <el-button size="small" type="primary">点击上传</el-button>
     <div slot="tip" class="el-upload__tip">上传描述图片</div>
</el-upload>



export default {
    data() {
        return {
            headerObj: {
                Authorization: token,
                'Content-Type': 'multipart/form-data'
            }
        }
    }
}

反而会报错 但也添加header请求头


那我们可以用自定义方法  http-request

<el-upload ref="upload" action :http-request="handleFileUpload" :file-list="fileList" list-type="picture" :limit="2" :on-change="handleChangePicture" :on-success="handleSuccess">
      <el-button size="small" type="primary">点击上传</el-button>
      <div slot="tip" class="el-upload__tip">上传描述图片</div>
 </el-upload>



ecport default {

    methods: {

      async handleFileUpload(fileObject) {
          let fd = new FormData()
          fd.append('image', fileObject.file);
          // header配置
          let config = {
            headers: {
              token: window.sessionStorage.getItem('token')
            }
          }
      }
      const { data: res } = await axios.post('/api/upload',fd,config);
      if (res.status !== 200) return;

    }
}

注意config重新写了一个header并上传

那么就成功了


注意点:

        1.el-unload 中 active 必须要有 可以不写

        2.使用  http-request 时往fd中添加addend并log打印fd会显示formData为空,要使用formData.get("键")查询,并注意键就是你fd.addend("键",参数),要看后端设置键什么,我看博客时就遇到有博主以为后端给的键就是文件名,所以一直报错,所以最好让后端设置一个固定。

   3.注意发请求data和formData只能存在一个。定义了formData就不能在请求中定义data

;