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

时间:2013-08-14 19:34:34

标签: json http base64 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”变量,并将二进制文件作为另一个变量上载?

1 个答案:

答案 0 :(得分:9)

  

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

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

  

或者我应该将JSON对象表示为某种形式   Multipart / form-data请求中的“json”变量,并具有二进制   要作为另一个变量上传的文件?

这应该有用。

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