gpt4 book ai didi

java - 如何在android retrofit中上传文件时显示进度条

转载 作者:行者123 更新时间:2023-11-30 00:56:17 24 4
gpt4 key购买 nike

我正在使用改造开发一个 Android 应用程序。我想使用参数将任何类型的文件上传到我的服务器。例如在我的应用程序中有文本字段,如电子邮件和文件上传字段。当我输入字段并单击提交按钮时。它显示上传文件和发送文件和数据到服务器的百分比。当上传过程进行时,它想要显示已完成文件的百分比。怎么可能?有没有引用网站或教程?请帮帮我好吗?

最佳答案

创建这个界面

public interface ProgressListener {
void transferred(long num);
}

还有这个类

    public class CountingTypedFile extends TypedFile {

private static final int BUFFER_SIZE = 4096;

private final ProgressListener listener;

public CountingTypedFile(String mimeType, File file, ProgressListener listener) {
super(mimeType, file);
this.listener = listener;
}

@Override
public void writeTo(OutputStream out) throws IOException {

byte[] buffer = new byte[BUFFER_SIZE];
FileInputStream in = new FileInputStream(super.file());
long total = 0;

try {

int read;
while ((read = in.read(buffer)) != -1) {

total += read;
out.write(buffer, 0, read);

try{
if (this.listener != null)
this.listener.transferred(total);
}catch (Exception e){

}

}
} finally {
in.close();
}
}
}

定义这个方法

@POST("/{path}")
public JsonObject makeRequestForAttachmentsUpload(@Path(value = "path", encode = false) String path, @Body MultipartTypedOutput multipartTypedOutput);

然后像这样调用上传方法

    RestClient restClient = new RestClient();
ApiService apiService = restClient.getApiService();

MultipartTypedOutput multipartTypedOutput = new MultipartTypedOutput();
// add and string parameters
for (String key : requestParams.keySet()) {
multipartTypedOutput.addPart(key, new TypedString(requestParams.get(key)));
}

// add attchments
multipartTypedOutput.addPart(attachmentName, new CountingTypedFile(attachmentType, new File(attachmentPath), listener));
apiService.makeRequestForAttachmentsUpload(requestName, multipartTypedOutput);

并通过定义此监听器来监听进度

listener = new DPAPIService.ProgressListener() {
@Override
public void transferred(long num) {
publishProgress(((num / (float) fileSize)));
}
};

关于java - 如何在android retrofit中上传文件时显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40109830/

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