使用multipart/form-data比JSON + Base64更好?

gen*_*pro 21 base64 json http multipart form-data

我有一台服务器,我需要将文件和一些字段从客户端上传到服务器.我目前一直在使用标准的multipart/form-data.

然而,我发现使用multipart/form-data并不理想.我的服务器上的对象可能嵌套在其中的其他对象,因此表示为嵌入其他JSON对象的JSON对象.

我希望客户端能够以REST-ful方式使用JSON表示开始发出POST/PUT请求,就像它对服务器的GET请求所期望的那样.这样我就不必将可能嵌套在JSON对象中的几个层的字段展平,以便使用multipart/form-data.

问题是,JSON不代表二进制数据.Multipart/form-data似乎没有办法表示嵌套在其他字段值中的字段.但它确实有更好的文件上传处理.

我对如何设计它感到茫然.我应该让客户端上传带有base64编码的字段的JSON,并获得25%的命中率吗?或者我应该在Multipart/form-data请求中将JSON对象表示为某种"json"变量,并将二进制文件作为另一个变量上载?

Ant*_*byh 10

我应该让客户端上传带有base64编码的字段的JSON,并获得25%的命中率吗?

自4/3 = 1.33以来,命中率为33%.

或者我应该在Multipart/form-data请求中将JSON对象表示为某种"json"变量,并将二进制文件作为另一个变量上载?

这应该工作.

您也可以考虑这种方法:使用multipart发送所有文件,然后获取一些文件识别器作为响应.把这个识别器放在你的json中,无论如何都要发送它.如果您有许多发送文件的方案,这种方法可能会有所帮助:您可能始终使用相同的请求将它们发送到服务器,然后获取其标识符; 之后,他们喜欢你.

  • 这么说有点晚了,但如果您采用 2 API 调用路线,您还需要处理孤立文件清理,其中文件调用成功但后续 json 调用未发生。 (5认同)