开发者社区 > 云存储 > 对象存储OSS > 正文

oss上传超时

oss上传图片超时

展开
收起
游客addduvzyr5ahi 2023-08-31 14:31:40 394 0
2 条回答
写回答
取消 提交回答
  • 是个只会写bug的程序媛啊!!!

    OSS上传超时可能有以下原因:

    • 网络问题 。客户端的上传代码读取的是本地文件还是网络流,如果是读取的网络流然后上传到OSS,那读文件的时间也会影响到上传时间。建议用本地文件先测试。
    • 上传的文件过大 。可以查看一下上传文件的size。
      上传的文件数量过多 。可以查看一下上传的文件数量。
    • 客户端的代码是否开启过crc64 。开启这个功能对上传的性能影响比较大,开启crc后,要在本地先对文件循环冗余校验完后,再开始上传。
    • etstat 查看下主机的 TCP 链接是否被打高。
    2023-08-31 18:03:43
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    超时,排除网络问题的话,大概就是你的图片太大了,可以考虑分片上传。

    在Java中使用阿里云OSS实现分片上传,你需要使用阿里云OSS的Java SDK。以下是一个基本的步骤和示例代码:

    首先,确保你已经引入了阿里云OSS的Java SDK。你可以在阿里云官方网站上下载并引入相关的依赖。

    然后,你需要创建一个OSSClient实例,使用你的阿里云OSS的AccessKeyId和AccessKeySecret进行初始化。

    // 初始化OSSClient
    String endpoint = "your_endpoint"; // 你的阿里云OSS的Endpoint
    String accessKeyId = "your_access_key_id"; // 你的阿里云OSS的AccessKeyId
    String accessKeySecret = "your_access_key_secret"; // 你的阿里云OSS的AccessKeySecret
     ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    

    接下来,你可以使用initiateMultipartUpload方法初始化分片上传。这个方法会返回一个InitiateMultipartUploadResult对象,其中包含了用于后续分片上传的UploadId。

    // 初始化分片上传
    String bucketName = "your_bucket_name"; // 你的阿里云OSS的Bucket名
    String objectName = "your_object_name"; // 你要上传的对象名
    InitiateMultipartUploadResult result = ossClient.initiateMultipartUpload(bucketName, objectName);
    String uploadId = result.uploadId();
    

    然后,你可以使用uploadPart方法上传每个分片。每个分片都有一个唯一的PartNumber,你需要为每个分片分配一个唯一的PartNumber。同时,你需要提供该分片的字节数据和具体的Etag。

    // 上传分片
    String uploadId = "your_upload_id"; // 上一步获取的UploadId
    String partNumber = "1"; // 分片的编号,从1开始
    byte[] data = "your_data".getBytes(); // 分片的字节数据
    String etag = "your_etag"; // 分片的Etag
    ossClient.uploadPart(bucketName, objectName, uploadId, partNumber, new ByteArrayInputStream(data), data.length, new PartMetadata(partNumber, etag));
    

    最后,当你上传完所有的分片后,你需要使用completeMultipartUpload方法完成分片上传。

    // 完成分片上传
    String uploadId = "your_upload_id"; // 上一步获取的UploadId
    CompleteMultipartUploadRequest request = new CompleteMultipartUploadRequest(bucketName, objectName, uploadId);
    CompleteMultipartUploadResult result = ossClient.completeMultipartUpload(request);
    

    具体操作流程可以参考阿里云官方文档:

    image.png
    image.png
    image.png

    2023-08-31 17:27:24
    赞同 展开评论 打赏
问答分类:
问答标签:
相关产品:

相关产品

  • 对象存储
  • 热门讨论

    热门文章

    相关电子书

    更多
    OSS运维进阶实战手册 立即下载
    《OSS运维基础实战手册》 立即下载
    OSS运维基础实战手册 立即下载