java - 使用原始字节而不是文件的AWS S3分段上传

标签 java amazon-web-services amazon-s3

我正在尝试创建分段上传,但是我收到原始数据,而不是文件,并且在文档中的示例中,分段请求需要文件,而不是数据,例如

UploadPartRequest uploadRequest = new UploadPartRequest()
        .withBucketName(bucketName)
        .withKey(key)
        .withUploadId(initResponse.getUploadId())
        .withPartNumber(part) // parts start with 1
        .withFileOffset(filePosition)
        .withFile(filePath.toFile())
        .withPartSize(partSize);
UploadPartResult uploadPartResult = amazonS3.uploadPart(uploadRequest);
partETags.add(uploadPartResult.getPartETag());

有什么方法可以将原始再见放入 UploadPartRquest 中吗?类似的东西

byte[] data = getData();
UploadPartRequest uploadRequest = new UploadPartRequest()
        .withBucketName(bucketName)
        .withKey(key)
        .withUploadId(initResponse.getUploadId())
        .withPartNumber(part) // parts start with 1
        .withFileOffset(filePosition)
        .withData(data)
        .withPartSize(partSize);
UploadPartResult uploadPartResult = amazonS3.uploadPart(uploadRequest);
partETags.add(uploadPartResult.getPartETag());

或者我是否坚持创建临时文件,将其发送到请求对象,然后删除所述文件?

感谢您的帮助!

最佳答案

看起来有 a withInputStream method并且您始终可以通过 ByteArrayInputStream 从字节数组创建 InputStream 。结合起来,我认为这会做你想要的。

关于java - 使用原始字节而不是文件的AWS S3分段上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60470379/

相关文章:

java - 对于由字符串和 double 组成的单个打印输出,我如何以及以什么顺序组合 printf 格式化参数?

java - @Value 不注入(inject)属性,保持为空

java - &0xff 和 MD5 结构有什么作用?

bash - 在主机之间复制 SSH key

linux - 将实例从 EC2 迁移到 Google Cloud

amazon-s3 - 为 Amazon S3 生成身份验证 header

记录到 Amazon S3

java - 如何根据提供的值删除 CSV 文件中的内容?

amazon-web-services - 使用 Terraform 将 AWS Lambda 日志写入 CloudWatch 日志组

python - 使用 Boto 将 S3 上的文件设置为只读