我有以下代码将文件上传到 AWS S3 存储桶。
如何使用校验和验证文件是否已成功上传?
如何计算路径中文件的校验和与上传到S3 bucket中的文件是否相同?
public class S3Uploader {
@Autowired
private S3TransferManager transferManager;
public String uploadFile( String bucketName, String key, String filePath) {
UploadFileRequest uploadFileRequest = UploadFileRequest.builder()
.putObjectRequest(b -> b.bucket(bucketName).key(key))
.addTransferListener(LoggingTransferListener.create())
.source(Paths.get(filePath))
.build();
FileUpload fileUpload = transferManager.uploadFile(uploadFileRequest);
CompletedFileUpload uploadResult = fileUpload.completionFuture().join();
return uploadResult.response().eTag();
}
}
可能有不同的方法来解决这个问题,但是您可以例如将校验和与文件一起上传,也许到不同的 /checksums/ 路径,然后连接您的 s3 存储桶以触发 lambda 为上传的文件创建校验和并比较结果到上传的校验和。