gpt4 book ai didi

java - 在分段上传请求中实现 ProgressDialog

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:59 26 4
gpt4 key购买 nike

我正在使用以下方法将图像从 Android 上传到服务器。

 public void uploadMultipart() {
//getting name for the image
String name = editText.getText().toString().trim();

//getting the actual path of the image
String path = getPath(filePath);


progress = ProgressDialog.show(this, "Subiendo imagen",
"Por favor, espere...", true);
//Uploading code
try {
String uploadId = UUID.randomUUID().toString();

//Creating a multi part request
new MultipartUploadRequest(this, uploadId, Constants.UPLOAD_URL)
.addFileToUpload(path, "image") //Adding file
.addParameter("name", name) //Adding text parameter to the request
.setNotificationConfig(new UploadNotificationConfig())
.setMaxRetries(2)
.startUpload(); //Starting the upload


} catch (Exception exc) {
Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show();
}

}

现在我想实现一个 ProgressDialog,它应该在上传完成时被关闭。我不知道多部分请求何时结束。

谢谢

最佳答案

有这门课:

public class SingleUploadBroadcastReceiver extends UploadServiceBroadcastReceiver {

public interface Delegate {
void onProgress(int progress);
void onProgress(long uploadedBytes, long totalBytes);
void onError(Exception exception);
void onCompleted(int serverResponseCode, byte[] serverResponseBody);
void onCancelled();
}

private String mUploadID;
private Delegate mDelegate;

public void setUploadID(String uploadID) {
mUploadID = uploadID;
}

public void setDelegate(Delegate delegate) {
mDelegate = delegate;
}

@Override
public void onProgress(String uploadId, int progress) {
if (uploadId.equals(mUploadID) && mDelegate != null) {
mDelegate.onProgress(progress);
}
}

@Override
public void onProgress(String uploadId, long uploadedBytes, long totalBytes) {
if (uploadId.equals(mUploadID) && mDelegate != null) {
mDelegate.onProgress(uploadedBytes, totalBytes);
}
}

@Override
public void onError(String uploadId, Exception exception) {
if (uploadId.equals(mUploadID) && mDelegate != null) {
mDelegate.onError(exception);
}
}

@Override
public void onCompleted(String uploadId, int serverResponseCode, byte[] serverResponseBody) {
if (uploadId.equals(mUploadID) && mDelegate != null) {
mDelegate.onCompleted(serverResponseCode, serverResponseBody);
}
}

@Override
public void onCancelled(String uploadId) {
if (uploadId.equals(mUploadID) && mDelegate != null) {
mDelegate.onCancelled();
}
}
}

然后在你的 Activity 中:

public class YourActivity extends Activity implements SingleUploadBroadcastReceiver.Delegate {

private static final String TAG = "AndroidUploadService";

private final SingleUploadBroadcastReceiver uploadReceiver =
new SingleUploadBroadcastReceiver();

@Override
protected void onResume() {
super.onResume();
uploadReceiver.register(this);
}

@Override
protected void onPause() {
super.onPause();
uploadReceiver.unregister(this);
}

public void uploadMultipart(final Context context) {
try {
String uploadId = UUID.randomUUID().toString();
uploadReceiver.setDelegate(this);
uploadReceiver.setUploadID(uploadId);

new MultipartUploadRequest(context, uploadId, "http://upload.server.com/path")
.addFileToUpload("/absolute/path/to/your/file", "your-param-name")
.setNotificationConfig(new UploadNotificationConfig())
.setMaxRetries(2)
.startUpload();

} catch (Exception exc) {
Log.e(TAG, exc.getMessage(), exc);
}
}

@Override
public void onProgress(int progress) {
//your implementation
}

@Override
public void onProgress(long uploadedBytes, long totalBytes) {
//your implementation
}

@Override
public void onError(Exception exception) {
//your implementation
}

@Override
public void onCompleted(int serverResponseCode, byte[] serverResponseBody) {
//your implementation
}

@Override
public void onCancelled() {
//your implementation
}

}

现在您将在上传成功/失败时触发适当的回调。

source

关于java - 在分段上传请求中实现 ProgressDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43490886/

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