【发布时间】:2014-06-29 07:20:33
【问题描述】:
我正在尝试发布图片的上传进度,使用 okhttp 作为我的客户端和 mimecraft 上传它们以打包多部分文件。
当数据被写入套接字时,我添加了日志以写入字节数(如果我能正确判断,以 4kb 的块)然后上传。
问题是,虽然每次写入一大块数据时我都会在输出流上调用 flush,但在将 ~800kb 写入输出流之前似乎什么都没有上传。一旦达到这一点,它似乎上传了大约 100kb,然后应用程序将另外 100kb 写入输出流(就像它释放的空间并且可以再写入一点)并继续。
这样做的结果是(超过 1.2mb 的文件)前 800kb 几乎立即被写入/报告,然后它开始上传(通过 charles 网络软件跟踪),然后将开始读取/写入/上传 100kb在接下来的几秒钟内,一旦我将最后一个字节写入输出流,应用程序报告 100% 的上传已写入。尽管网络客户端仍在上传仍然在网络缓冲区中的最后 800kb,但它仍然存在 5-10 秒上传,然后完成请求。
有没有人有过这种经历,或者知道这是否是okhttp中的常见问题?
干杯
编辑:如果我上传一个小于 800kb 的文件,我测试了一些 250kb 和 500kb,它们都在上传前立即 100% 写入流,但 3mb 图像仍将上传 800kb,然后在大约 100kb 块,每次上传时,写入循环都会再写入 100kb。
【问题讨论】:
-
你有没有成功。也请分享您的上传代码。
-
有这方面的消息吗,我也遇到了同样的问题?
-
@Glenn.nz 我知道你问这个问题已经很长时间了,但你有没有找到任何好的解决方案?即使我将发送缓冲区大小设置为 16KB,它仍在缓冲 200KB 的数据。
标签: android okhttp bufferedoutputstream mimecraft