Is using multipart/form-data any better then JSON + Base64?
我有一台服务器,我需要将文件以及一些字段从客户端上传到服务器。我目前一直在使用标准的multipart / form-data。
但是我发现使用multipart / form-data并不理想。我服务器上的对象中可能还嵌套了其他对象,因此被表示为JSON对象,其中嵌入了其他JSON对象。
我希望客户端开始使用JSON表示形式开始发出POST / PUT请求,就像在REST-ful方式中对服务器的GET请求中期望的那样。这样,我不必为了使用multipart / form-data而将可能嵌套在JSON对象中的几个层中的字段弄平。
问题是,JSON不代表二进制数据。 Multipart / form-data似乎没有办法表示嵌套在其他字段值内的字段。但是,它确实可以更好地处理文件上传。
我不知道如何设计它。我是否应该让客户端上传带有以base64编码的字段的JSON,并获得25%的成功率?还是应该让JSON对象在Multipart / form-data请求中表示为某种" json"变量,并让二进制文件作为另一个变量上传?
Should I just have the client upload JSON with the fields encoded in
base64, and take the 25% hit?
自4/3 = 1.33以来,命中率为33%。
Or should I have the JSON object being represented as some sort of
"json" variable in a Multipart/form-data request, and have the binary
files to be uploaded as another variable?
这应该工作。
您可能还会考虑这种方法:使用多部分发送所有文件,然后获取一些文件标识符作为响应。 将此标识符放在您的json中,然后以您喜欢的方式发送。 如果您在许多情况下发送文件,则此方法可能会很有用:您可能总是以相同的请求将它们发送到服务器,然后获取其标识符; 之后,与他们一起做你喜欢的事情。