gpt4 book ai didi

android - 显示上传图片进度 Multipart

转载 作者:太空狗 更新时间:2023-10-29 13:45:11 28 4
gpt4 key购买 nike

在 fragment B 中,我有一个用于将图像提交到服务器的提交按钮。单击提交按钮时,它将返回到 fragment A。我使用 Multipart 将图像上传到服务器,并且该进程在 Thread 上运行,因此用户可以同时执行其他任务等待图片上传。

fragment B(点击提交按钮时)

 inner class SimpleThread() :Thread() {
override fun run() {
for (i in newList!!) {
val service = RetrofitFactory.makeRetrofitService()
GlobalScope.launch(Dispatchers.IO) {
val request2 = WebApi.createImage(
activity,File(i)
)
}
}
}

WebAPI

suspend fun createImage(
file: File?
): WebApiResponse.Image? {
val image = file?.let {
MultipartBody.Part.createFormData(
"image",
it.getName(),
RequestBody.create(MediaType.parse("image/*"), it)
)
}

return RetrofitFactory.apiCall(context) {
RetrofitFactory.makeRetrofitService().submitImages(
image
)
}
}

retrofit 服务

@Multipart
@POST("create_image")
fun submitImages(
@Part image: MultipartBody.Part?
): Deferred<Response<WebApiResponse.Image>>

我可以将图片上传到服务器,但是如何在 fragment A 上显示上传图片的进度?

感谢任何帮助。

最佳答案

经过一些研究,我找到了两种适合你的方法

1- 如果您使用的是 RxJava,我建议您遵循此链接中的说明和注意事项 display progress of multipart with retrofit using RxJava

2- 如果您不使用 RxJava,请将 ProgressResponseBody 添加到改造构建器中,看起来像这样:

public class ProgressRequestBody extends RequestBody {
private File mFile;
private String mPath;
private UploadCallbacks mListener;
private String content_type;

private static final int DEFAULT_BUFFER_SIZE = 2048;

public interface UploadCallbacks {
void onProgressUpdate(int percentage);
void onError();
void onFinish();
}

对于这个你应该使用this answer

关于android - 显示上传图片进度 Multipart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55447672/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com