我可以使用 Retrofit 的 MultiPart
注释将文件上传到我的服务器,而不会出现任何问题。
但是,我想要的是将仍在写入磁盘的文件流式传输到服务器。是否可以使用改造?
最佳答案
多部分请求的改造使用 okhttp3.RequestBody
。因此,您必须创建自己的 RequestBody
来生成数据。
这是取自 OkHttp 食谱 (https://github.com/square/okhttp/wiki/Recipes#post-streaming) 的示例
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse("text/x-markdown; charset=utf-8");
RequestBody requestBody = new RequestBody() {
@Override public MediaType contentType() {
return MEDIA_TYPE_MARKDOWN;
}
@Override public void writeTo(BufferedSink sink) throws IOException {
sink.writeUtf8("Numbers\n");
sink.writeUtf8("-------\n");
for (int i = 2; i <= 997; i++) {
sink.writeUtf8(String.format(" * %s = %s\n", i, factor(i)));
}
}
private String factor(int n) {
for (int i = 2; i < n; i++) {
int x = n / i;
if (x * i == n) return factor(x) + " × " + i;
}
return Integer.toString(n);
}
};
关于android - 如何使用 Retrofit 或类似方法将文件流式传输到服务器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36240437/