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?
1条答案
按热度按时间f4t66c6m1#
不,json内容类型不能附加文件。对于API,最好单独进行文件上传,然后使用文件路径(或磁盘和文件名)将资源与文件关联起来。
如果你必须做一个单一的请求,那么它必须在“formData”的形式。
更新:另一种方法是从客户端以base64格式对文件进行编码,然后在后端对其进行解码(潜在的质量损失,尚未尝试过此方法,只是一个建议)