在vue项目中使用element的Upload搭建上传功能,报跨

2019-05-08  本文已影响0人  韩小强
 <el-upload
   class="uploadHead"
   :action="logoUrl"
   with-credentials
   :show-file-list="false"
   :before-upload="beforeAvatarUpload"
   :http-request="myUpload"
   name="logo">
   <el-button size="small" type="primary">点击上传</el-button>
   </el-upload>
></el-cascader>

开发前已使用cors解决项目跨域问题,
!CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)
项目中修改请求头header信息,向后台的发生非简单请求。非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight),预检成功后发送数据请求。
但是upload发送预检请求成功,第二次请求报跨域问题,后端人员也没有查找除问题。

<el-upload
          class="uploadHead"
          :action="logoUrl"
          with-credentials
          :show-file-list="false"
          :before-upload="beforeAvatarUpload"
          :http-request="myUpload"
          name="logo">
          <el-button size="small" type="primary">点击上传</el-button>
        </el-upload>

myUpload(content) {
        let formData = new FormData();
        formData.append('logo',content.file); // 'file[]' 代表数组 其中`file`是可变的
        request.post(content.action, formData).then(rs=>{
          this.$store.dispatch('GetInfo')
        }).catch(err=>{
          this.$store.dispatch('LogMessage', "用户头像上传失败!")
          console.log(err)
        })
      },

自定义请求,把上传文件封装成formData对象,通过axois进行请求,运行成功!!!

上一篇下一篇

猜你喜欢

热点阅读