axios 上传图像时的formData与JSON(最佳实践)

zqry0prt  于 2022-11-23  发布在  iOS
关注(0)|答案(1)|浏览(321)

JSON在向服务器发送数据方面似乎比formData有很多优势,其中一些优势包括发送嵌套数据而不必手动进行字符串化,或者使下面这样的简单代码能够工作:

data() {
    return {
      form: {},
    }
  },
methods: {
    submit() {
      this.form = await this.$axios.$post('/images', this.form)
    },

无论'form'对象是如何构造的,我都可以很容易地发送它并在服务器中管理JSON。这种方法的问题似乎出现在我们需要一起发送一些上传的文件时。最常见的方法似乎是以base64格式发送文件,但这是一种不好的做法,因为它会使文件变大。有没有办法发送一个附加在JSON主体上的文件而不将其转换为base64,或者唯一的方法是使用formData方法?类似于使用JSON的multipart-formdata?

f4t66c6m

f4t66c6m1#

不,json内容类型不能附加文件。对于API,最好单独进行文件上传,然后使用文件路径(或磁盘和文件名)将资源与文件关联起来。
如果你必须做一个单一的请求,那么它必须在“formData”的形式。

更新:另一种方法是从客户端以base64格式对文件进行编码,然后在后端对其进行解码(潜在的质量损失,尚未尝试过此方法,只是一个建议)

相关问题