设计 API 接口,图片上传部分,有必要限制 client 使用 multipart/form-data 方式提交吗?

2013-11-23 22:13:38 +08:00
 andybest
参考了几个 API ,文件上传都需要 multipart/form-data 方式 POST ,这是为什么?
我打算做成 client 普通 POST 方式提交,使用 Base64 Encode 图片文件,这样的设计比上面的有什么缺点?
3902 次点击
所在节点    问与答
8 条回复
oldcai
2013-11-23 22:23:49 +08:00
multipart/form-data传的二进制,可以理解为Base256,比Base64节约3倍的流量。
专门做图片上传接口的,当然对带宽什么的要求节约。
所以。
Livid
2013-11-23 22:24:29 +08:00
为了让这个接口可以兼容浏览器?
andybest
2013-11-23 22:26:11 +08:00
@oldcai 非常感谢!

所以。。。我设计成普通 POST 并且要求 Base64 Encode 的话会被用户嘲笑了?。。。
andybest
2013-11-23 22:28:15 +08:00
@Livid 不是,浏览器都支持 multipart/form-data 方式 POST
主要不想增加 Client 多余代码,毕竟发送 multipart/form-data request 比普通的 request 代码复杂点
tangzx
2013-11-23 22:34:01 +08:00
API 的设计其实应该考虑尽量多的情况,比如一个好的例子,GitHub 的 auth 既支持 http basic 也支持 OAuth ,既然想都想到了,就多支持一个吧
andybest
2013-11-23 23:11:19 +08:00
@tangzx 感谢
你的意思是 API 接口同时支持 multipart/form-data 方式 POST 和 普通 POST 并且要求 Base64 Encode ?
hepochen
2013-11-23 23:32:20 +08:00
@andybest 我们就是这样处理的,Base64是会导致获取的数据比源binary要大,但是一般情况下,没有3倍这么夸张。你自己弄一张图片对比一下就明白了。
tangzx
2013-11-24 09:33:24 +08:00
@andybest 对,应该是说可用 multipart 和 encoded form ,如果用multipart 则可以用 二进制 替代base64

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/90373

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX