我写了一个接受MultipartFile
的Rest API。我想上传进入Amazon S3的文件。问题是,除了先将其保存到本地系统之前我还不知道其他方法,然后再将其上传到S3。有没有办法这样做?
目前,在本地保存文件存在问题,我正在寻找解决方法:Multipart transferTo looks for a wrong file address when using createTempFile
答案 0 :(得分:3)
是的,你可以这样做。使用消耗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