开发者社区 问答 正文

android华为手机使用oss异步上传图片失败

android华为手机使用oss异步上传图片,回调执行成功,但访问图片路径一直404;
final PutObjectRequest put = new PutObjectRequest(BUCKET_NAME, objectKey, uploadFilePath);
put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
@Override
public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
Log.i("MyLog", "****oonProgress=======totalSize="+totalSize/1024+"=currentSize="+currentSize/1024+"KB");
}
});
mOss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest putObjectRequest, PutObjectResult putObjectResult) {
if (putObjectResult != null) {
Log.i("MyLog", "****UploadSuccess图片路径=" + BASE_IMG_URL + put.getObjectKey());
Log.i("MyLog", "****ETag=" + putObjectResult.getETag()+"---RequestId()"+putObjectResult.getRequestId());
if (uploadListener != null) {
String path = putObjectRequest.getObjectKey();
uploadListener.onSuccess(path);
}
}
}
@Override
public void onFailure(PutObjectRequest putObjectRequest, ClientException e, ServiceException e1) {
if (e1 != null) {
Log.i("MyLog", "****ServiceException-----ErrorCode====" + e1.getErrorCode());
Log.i("MyLog", "****ServiceException-----RequestId====" + e1.getRequestId());
Log.i("MyLog", "****ServiceException-----RawMessage====" + e1.getRawMessage());
if (uploadListener != null)
uploadListener.onFail("图片上传失败");
}
}
});

展开
收起
1551432916992915 2018-08-21 14:38:01 3129 分享 版权
阿里云 AI 助理回答

遇到Android华为手机使用OSS异步上传图片成功,但访问图片路径时返回404错误的情况,可能的原因有以下几点,请逐一排查:

  1. Bucket名称或Object Key是否正确:请确认BUCKET_NAMEobjectKey变量的值是否正确无误。特别是objectKey,确保它符合OSS的命名规则,并且没有特殊字符导致的路径问题。

  2. 权限设置:检查OSS Bucket的读权限设置。确保该Bucket对匿名用户或者指定的角色有足够的读权限。可以通过OSS控制台查看并修改ACL(Access Control List)设置,或者通过Bucket Policy来设置更细粒度的权限控制。

  3. 跨域资源共享(CORS):如果您的应用是通过Web页面访问这些图片,需要在OSS Bucket中配置CORS规则,允许来自特定源的跨域请求。

  4. 图片路径拼接问题:您提到的BASE_IMG_URLput.getObjectKey()拼接生成的访问URL,请确保这个拼接过程没有问题,比如是否有额外的斜杠、空格等导致路径不正确。

  5. 文件上传后的处理时间:虽然回调执行成功,但有时文件状态更新和索引建立需要一点时间,尤其是在高负载情况下。可以尝试稍等片刻再次访问图片路径。

  6. 网络环境问题:虽然不太常见,但客户端的网络环境也可能影响到访问结果,尤其是DNS解析问题。可以尝试切换网络环境或清理DNS缓存后重试。

  7. 华为手机系统限制:部分华为手机可能会有特殊的系统安全策略或网络管理设置,影响到某些网络请求。检查手机的系统设置,看是否有相关的限制或需要手动授权的地方。

解决步骤建议: - 首先,在OSS控制台直接使用成功的objectKey尝试访问图片,确认图片是否确实已上传。 - 检查并调整Bucket的访问权限和CORS设置。 - 确认URL构造逻辑无误。 - 如果以上都确认无误,考虑是否存在网络延迟或系统限制问题,适当等待或检查手机设置。

如果问题依旧,建议开启OSS的日志管理功能,获取更详细的日志信息进行分析,或者联系阿里云技术支持获取帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答