Implementing ProgressDialog in Multipart Upload Request

前端 未结 3 743
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-02 18:15

I am using following method to upload an image from Android to server.

 public void uploadMultipart() {
        //getting name for the image
        String n         


        
3条回答
  •  一向
    一向 (楼主)
    2021-01-02 19:00

    Having this class:

    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();
            }
        }
    }
    

    Then in your 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
        }
    
    }
    

    Now you'll have appropriate callbacks fired upon successful/unsuccessful upload.

    source

提交回复
热议问题