开发者社区 问答 正文

对象存储 OSS简单上传本地文件

已解决

展开
收起
2018-04-15 21:06:58 1851 分享 版权
1 条回答
写回答
取消 提交回答
  • 用户已注销
    采纳回答

    详细解答可以参考官方帮助文档

    调用同步接口上传

    1. // 构造上传请求
    2. PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectKey>", "<uploadFilePath>");
    3. // 文件元信息的设置是可选的
    4. // ObjectMetadata metadata = new ObjectMetadata();
    5. // metadata.setContentType("application/octet-stream"); // 设置content-type
    6. // metadata.setContentMD5(BinaryUtil.calculateBase64Md5(uploadFilePath)); // 校验MD5
    7. // put.setMetadata(metadata);
    8. try {
    9. PutObjectResult putResult = oss.putObject(put);
    10. Log.d("PutObject", "UploadSuccess");
    11. Log.d("ETag", putResult.getETag());
    12. Log.d("RequestId", putResult.getRequestId());
    13. } catch (ClientException e) {
    14. // 本地异常如网络异常等
    15. e.printStackTrace();
    16. } catch (ServiceException e) {
    17. // 服务异常
    18. Log.e("RequestId", e.getRequestId());
    19. Log.e("ErrorCode", e.getErrorCode());
    20. Log.e("HostId", e.getHostId());
    21. Log.e("RawMessage", e.getRawMessage());
    22. }

    注意:在Android中,不能在UI线程调用同步接口,只能在子线程调用,否则将出现异常。如果希望直接在UI线程中上传,请使用异步接口。

    调用异步接口上传

    1. // 构造上传请求
    2. PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectKey>", "<uploadFilePath>");
    3. // 异步上传时可以设置进度回调
    4. put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
    5. @Override
    6. public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
    7. Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    8. }
    9. });
    10. OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
    11. @Override
    12. public void onSuccess(PutObjectRequest request, PutObjectResult result) {
    13. Log.d("PutObject", "UploadSuccess");
    14. Log.d("ETag", result.getETag());
    15. Log.d("RequestId", result.getRequestId());
    16. }
    17. @Override
    18. public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
    19. // 请求异常
    20. if (clientExcepion != null) {
    21. // 本地异常如网络异常等
    22. clientExcepion.printStackTrace();
    23. }
    24. if (serviceException != null) {
    25. // 服务异常
    26. Log.e("ErrorCode", serviceException.getErrorCode());
    27. Log.e("RequestId", serviceException.getRequestId());
    28. Log.e("HostId", serviceException.getHostId());
    29. Log.e("RawMessage", serviceException.getRawMessage());
    30. }
    31. }
    32. });
    33. // task.cancel(); // 可以取消任务
    34. // task.waitUntilFinished(); // 可以等待任务完成
    2018-04-17 11:51:02
    赞同 展开评论