前几天遇到了这样一个需求:监听粘贴事件,将粘贴板中的文件上传至七牛。

这个需求的实现过程我会另开一片文章,这篇文章主要用来记录我在使用 axios 直传七牛的过程中遇到的问题。

我本想这不是很简单:

function uploadFile(){
  const formData = new FormData()
  formData.append('file', file)
  formData.append('token', this.token)
  formData.append('key', this.key)
  axios.post('url', formData).then(res => {
    // code......
  })
}

结果返回的却是:

{error: "invalid multipart format: no multipart boundary param in Content-Type"}

然后我就开始在网上搜,试着改了 Content-Type,但还是没用,最后我在这里找到了与我遇到相同问题的人,于是我用他的方法试了一下:

import axios from 'axios'


function uploadFile(){
  const $axios = axios.create({ withCredentials: false })
  const formData = new FormData()
  formData.append('file', file)
  formData.append('token', this.token)
  formData.append('key', this.key)
  $axios({
    url: 'url',
    data: formData,
    method: 'post'
  }).then(res => {
    // code......
  })
}

结果果然成功了!

不过发生了个诡异的事情,在我写这篇文章的时候,我想重新复现一下问题,结果发现我上面直接使用 axios.post 也可以正常上传了,但前几天在试的时候的确是返回错误信息的!所以我现在有点怀疑人生。