我使用Rails 5作为移动应用的后端。我试图解决的问题是从应用程序接收包含有关客户的信息加上2张照片的请求。经过短暂的处理后,出现了两个选项:
发送文件为Base64.encoded
格式而不更改JSON标头。类似的东西:
curl -X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Cache-Control: no-cache" \
-d '{
"data": {
"type": "identities",
"attributes": {
"param1": "first param",
"param2": "second param",
"image1": "data:image/png;base64,iVBORw0KGgoAAAANSU.....",
"image2": "data:image/png;base64,iVBORw0KGgoAAAANSU....."
}
}' "http://API_URL/identity"
我对这两种方法的担忧分别是:
如果有人能提出别的建议,我会非常感激。此外,如果您对此问题有任何经验,请分享您使用过的有用参考资料,我也将非常感激。
答案 0 :(得分:0)
1)如果您在一个请求中需要2个文件 - 将2个文件作为multipart / form-data传递,那就完全没问题了。如果你使用b64,你首先编码所有内容,然后解码所有内容。不是最好的主意。
2)您应该在前端和后端验证这些文件。最大字节数应该类似于max_file1_size + max_file_2_size + max_other_fields_size + headers_size
,而不是猜测然后尝试。
3)使用carrierwave
- 漂亮的宝石,这将是一个不错的选择,你将获得更少的空间来捣乱:)