element upload上传文件跨域问题?

这是官网的列子

<el-upload
  class="upload-demo"
  ref="upload"
  action="https://jsonplaceholder.typicode.com/posts/"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :file-list="fileList"
  :auto-upload="false">
  <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
<script>
  export default {
    data() {
      return {
        fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
      };
    },
    methods: {
      submitUpload() {
        this.$refs.upload.submit();
      },
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      }
    }
  }
</script>

我把action改成自己的地址,却一直报跨域的错,后台已经设置了跨域的问题,如果我用from表单提交是可以的
图片描述

还有就是请求头根本不是上传文件的那种请求头
图片描述

这件组件到底该怎么用

阅读 27.5k
4 个回答
新手上路,请多包涵

使用组件http-request属性重写上传方法

使用前需配置

const upload = axios.create({
  baseURL: 'api',
  //这里配置你自己的url
  timeout: 5000,
  headers: {
    'Content-Type': 'multipart/form-data' //请求头
  }
})

Vue.prototype.$upload = upload;
upload(item) {
      let formData = new FormData();
      formData.append('file', item.file);
      this.¥upload .post('api', formData)
        .then(res => {
          console.log(res)
        })
        .catch(err => {
          console.log(err)
        })
    },

看到 Access-Control-Allow-Origin 就可以定位到跨域访问的问题了。去搜下 JS 跨域相关的问题答案吧(SF中就有不少)

请求怎么带上参数?这个el-upload是表单发送还是发送的ajax?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题