Java AWS S3 PutObject多部分文件

Java AWS S3 PutObject多部分文件,java,amazon-web-services,amazon-s3,Java,Amazon Web Services,Amazon S3,我在尝试将图像文件放入S3时遇到了一些问题, exception = "com.amazonaws.SdkClientException"; message = "Unable to calculate MD5 hash: /home/ubuntu/image1517896928.png (No such file or directory)"; 我首先在服务器上下载MultipartFile,然后使用我称之为putObject方法的文件, 因为S3 putObject方法采用以下参

我在尝试将图像文件放入S3时遇到了一些问题,

 exception = "com.amazonaws.SdkClientException";
    message = "Unable to calculate MD5 hash: /home/ubuntu/image1517896928.png (No such file or directory)";
我首先在服务器上下载MultipartFile,然后使用我称之为putObject方法的文件,
因为S3 putObject方法采用以下参数-

putObject(String arg0, String arg1, File arg2) 
这是我的代码-

public String uploadImage(MultipartFile image) throws IOException, InterruptedException{

    File localFile = new File(SERVER_HOME_DIRECTORY + image.getOriginalFilename());

    AmazonS3 s3client = new AmazonS3Client();
    s3client.setRegion(Region.getRegion(Regions.EU_CENTRAL_1));

    s3client.putObject(new PutObjectRequest("bucketName", "prefix", localFile));

    return "ok";      
}

必须首先将多部分文件写入本地文件<代码>image.transferTo(本地文件)


必须首先将多部分文件写入本地文件<代码>image.transferTo(本地文件)


我想建议使用
TransferManager
,它非常可靠,可以为将文件传输到S3提供更好的性能。这也是检查上传进度的选项(使用侦听器)

TransferManager提供了一个简单的API,用于将内容上载到Amazon S3,并广泛使用AmazonS3多部分上传来实现 提高了吞吐量、性能和可靠性

如果可能,TransferManager会尝试使用多个线程来 一次上载单个上载的多个部分。在处理 大内容大小和高带宽,这可能会产生重大影响 提高吞吐量


我想建议使用
TransferManager
,它非常可靠,可以为将文件传输到S3提供更好的性能。这也是检查上传进度的选项(使用侦听器)

TransferManager提供了一个简单的API,用于将内容上载到Amazon S3,并广泛使用AmazonS3多部分上传来实现 提高了吞吐量、性能和可靠性

如果可能,TransferManager会尝试使用多个线程来 一次上载单个上载的多个部分。在处理 大内容大小和高带宽,这可能会产生重大影响 提高吞吐量


错误消息显示出了什么问题
/home/ubuntu/image1517896928.png(没有这样的文件或目录)
是的,我选中了,位置上有图像,我在放置后删除图像,可能是putObject是异步的吗?当我的代码从服务器上删除映像时,文件可能还没有放在S3上?错误消息显示出了什么问题
/home/ubuntu/image1517896928.png(没有这样的文件或目录)
是的,我选中了,位置上有图像,我在放置后删除图像,可能是putObject是异步的吗?当我的代码从服务器上删除映像时,文件可能还没有放在S3上?什么是multipart.transferTo方法的类?什么是multipart.transferTo方法的类?再加上这一点,TransferManager目前仅在AWS SDK V1中可用,它仍在V2的开发中。除此之外,TransferManager目前仅在AWS SDK V1中可用,它仍在为V2开发中。
public String uploadImage(MultipartFile image) throws IOException, InterruptedException{

    File localFile = new File(SERVER_HOME_DIRECTORY + image.getOriginalFilename());
    image.transferTo(localFile);
    AmazonS3 s3client = new AmazonS3Client();
    s3client.setRegion(Region.getRegion(Regions.EU_CENTRAL_1));

    s3client.putObject(new PutObjectRequest("bucketName", "prefix", localFile));

    return "ok";      
}