版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
详细解答可以参考官方帮助文档
调用同步接口上传:
// 构造上传请求PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectKey>", "<uploadFilePath>");// 文件元信息的设置是可选的// ObjectMetadata metadata = new ObjectMetadata();// metadata.setContentType("application/octet-stream"); // 设置content-type// metadata.setContentMD5(BinaryUtil.calculateBase64Md5(uploadFilePath)); // 校验MD5// put.setMetadata(metadata);try {PutObjectResult putResult = oss.putObject(put);Log.d("PutObject", "UploadSuccess");Log.d("ETag", putResult.getETag());Log.d("RequestId", putResult.getRequestId());} catch (ClientException e) {// 本地异常如网络异常等e.printStackTrace();} catch (ServiceException e) {// 服务异常Log.e("RequestId", e.getRequestId());Log.e("ErrorCode", e.getErrorCode());Log.e("HostId", e.getHostId());Log.e("RawMessage", e.getRawMessage());}
注意:在Android中,不能在UI线程调用同步接口,只能在子线程调用,否则将出现异常。如果希望直接在UI线程中上传,请使用异步接口。
调用异步接口上传:
// 构造上传请求PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectKey>", "<uploadFilePath>");// 异步上传时可以设置进度回调put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {@Overridepublic void onProgress(PutObjectRequest request, long currentSize, long totalSize) {Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);}});OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {@Overridepublic void onSuccess(PutObjectRequest request, PutObjectResult result) {Log.d("PutObject", "UploadSuccess");Log.d("ETag", result.getETag());Log.d("RequestId", result.getRequestId());}@Overridepublic void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {// 请求异常if (clientExcepion != null) {// 本地异常如网络异常等clientExcepion.printStackTrace();}if (serviceException != null) {// 服务异常Log.e("ErrorCode", serviceException.getErrorCode());Log.e("RequestId", serviceException.getRequestId());Log.e("HostId", serviceException.getHostId());Log.e("RawMessage", serviceException.getRawMessage());}}});// task.cancel(); // 可以取消任务// task.waitUntilFinished(); // 可以等待任务完成