我编写了一个接受 MultipartFile
的 Rest API。我想将传入的文件上传到 Amazon S3。问题是除了先将其保存到本地系统然后再将其上传到 S3 之外,我不知道其他方法。有什么办法吗?
现在,在本地保存文件时出现问题,我正在寻找解决方法:Multipart transferTo looks for a wrong file address when using createTempFile
最佳答案
是的,你可以这样做。使用 putObject
将 InputStream
作为参数。
这是示例代码。
public void saveFile(MultipartFile multipartFile) throws AmazonServiceException, SdkClientException, IOException {
ObjectMetadata data = new ObjectMetadata();
data.setContentType(multipartFile.getContentType());
data.setContentLength(multipartFile.getSize());
BasicAWSCredentials creds = new BasicAWSCredentials("accessKey", "secretKey");
AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_2).withCredentials(new AWSStaticCredentialsProvider(creds)).build();
PutObjectResult objectResult = s3client.putObject("myBucket", multipartFile.getOriginalFilename(), multipartFile.getInputStream(), data);
System.out.println(objectResult.getContentMd5()); //you can verify MD5
}
您可以找到 javadoc here
关于java - 将多部分文件上传到 AWS 而无需在本地保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50248710/