【发布时间】:2017-11-22 14:53:35
【问题描述】:
我有一个上游服务器,它接受使用 REST 提交的图像。提交的图像是类似于此的 JSON 有效负载的一部分
{
"name": "Blah.jpg",
"uploader": "user1",
"image": "<base64.....>"
}
使用此策略适用于小图像,但会在较大图像上产生内存不足错误。
是否可以流式传输图像的 base64 组件?传入诸如迭代器之类的东西,它将用于读取图像块,base64 并将它们直接发送到网络?
【问题讨论】:
-
是否可以使用
POST直接上传文件,而不是在 JSON 有效负载中包装 blob? -
考虑使用 tus 发送图像,它是为它设计的,它允许恢复中断的传输。您当前的解决方案实际上是最糟糕的,请注意 base64 字符串大约比源图像大 1.5 倍。您应该使用 tus 上传图片并在您的 json 中提供 tus 上传 ID
-
感谢 cmets。我们正在考虑要求我们的上游重新设计 API 并允许我们按照@LyubomyrShaydariv 所说的那样直接发布。嵌入 base64 图像的原因是进行单个 HTTP 调用来传递图像和图像元数据。我们可能需要在新 API 中进行 2 次调用。
-
请注意 - 我编辑了已接受的答案,结果是最适合我的。我在使用 Android SDK 的 Base64 编码器时遇到了一些问题。
标签: android gson retrofit2 okhttp