智能客服
你问我答,随时在线为你解决问题
通过云存储SDK,您可以快速上传本地设备上的文件到云端,同时可以对上传任务进行管理,如暂停、继续、取消上传任务,监控上传进度,任务异常中断后进行断点续传等。
您可以通过引用操作本地设备上的文件,将文件上传到云端的存储实例中。
调用AGCStorageManagement.getStorageReference方法创建待上传文件的引用,以将本地文件上传到预先规划的云端地址中。
- StorageReference reference = storageManagement.getStorageReference("images/demo.jpg");
上传文件前支持您设置文件的自定义属性,具体请参见设置元数据。
- UploadTask task = reference.putFile(new File("path/images/test.jpg"));
- task.addOnFailureListener(new OnFailureListener(){
- @Override
- public void onFailure(@NonNull Exception exception) {
- }
- }).addOnSuccessListener(new OnSuccessListener<UploadTask.UploadResult>(){
- @Override
- public void onSuccess(UploadTask.UploadResult uploadResult) {
- }
- });
-
如果您需要在上传文件时为文件指定自定义属性,可以使用putFile(File srcFile, FileMetadata attribute)方法。
如果您需要在上传文件时支持断点续传,可以使用putFile(File srcFile, FileMetadata attribute, Long offset)方法,offset设为0。若任务异常中断,您可以再次调用该方法恢复任务,从中断的位置开始上传,offset的值通过UploadTask.UploadResult.getBytesTransferred方法获取。
文件在正常上传过程中,可通过调用UploadTask类的pause、resume、cancel方法(继承自StorageTask)切换上传任务的状态。
- StorageReference reference = storageManagement.getStorageReference("images/demo.jpg");
- UploadTask task = reference.putFile(new File("images/test.jpg"));
- task.pause();
- task.resume();
- task.cancel();
文件在上传时,可通过调用StorageTask类的addOnProgressListener、addOnPausedListener、addOnSuccessListener、addOnFailureListener、addOnCanceledListener、addOnCompleteListener方法,添加UploadTask的监听器来监控上传任务中的状态切换。
- StorageReference reference = storageManagement.getStorageReference("images/demo.jpg");
- UploadTask task = reference.putFile(new File("path/images/test.jpg"));
- task.addOnFailureListener(new OnFailureListener(){
- @Override
- public void onFailure(@NonNull Exception exception) {
- }
- }).addOnSuccessListener(new OnSuccessListener<UploadTask.UploadResult>(){
- @Override
- public void onSuccess(UploadTask.UploadResult uploadResult) {
- }
- }).addOnProgressListener(new OnProgressListener<UploadTask.UploadResult>(){
- @Override
- public void onProgress(UploadTask.UploadResult uploadResult) {
- System.out.println(String.format("progress: %f", (uploadResult.getBytesTransferred()*1.0)/uploadResult.getTotalByteCount()));
- }
- }).addOnPausedListener(new OnPausedListener<UploadTask.UploadResult>(){
- @Override
- public void onPaused(UploadTask.UploadResult uploadResult) {
- }
- }).addOnCanceledListener(new OnCanceledListener(){
- @Override
- public void onCanceled() {
- }
- }).addOnCompleteListener(new OnHarmonyCompleteListener<UploadTask.UploadResult>(){
- @Override
- public void onComplete(HarmonyTask<UploadTask.UploadResult> task) {
- }
- });
上传任务在执行的过程中,可能会因为使用方式、网络环境等原因产生的StorageException异常导致上传任务中断,通过断点续传接口putFile(File srcFile, FileMetadata attribute, Long offset),可以继续未完成的上传任务,提升用户的使用体验。
- FileMetadata attribute = new FileMetadata();
- attribute.setContentType("image/jpeg");
- attribute.setSHA256Hash("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef");
- StorageReference reference = storageManagement.getStorageReference("images/demo.jpg");
- UploadTask task = reference.putFile(new File("path/images/test.jpg"), attribute, 100L);