本文介绍了在分段上传请求中实现ProgressDialog的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用以下方法将图像从Android上传到服务器。
I am using following method to upload an image from Android to server.
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上传完成后应该被解雇。我不知道多部分请求何时结束。
Now I want to implement a ProgressDialog that should be dismissed when the upload finishes. I don´t know when the multi part request ends.
谢谢
推荐答案拥有这个类:
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(); } } }然后在您的活动中:
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, "upload.server/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 } }现在,在成功/不成功上传后,您将获得适当的回调。
Now you'll have appropriate callbacks fired upon successful/unsuccessful upload.
来源
更多推荐
在分段上传请求中实现ProgressDialog
发布评论