将多部分文件上载到AWS而不在本地保存

时间:2018-05-09 08:23:32

标签: java amazon-web-services amazon-s3

我写了一个接受MultipartFile的Rest API。我想上传进入Amazon S3的文件。问题是,除了先将其保存到本地系统之前我还不知道其他方法,然后再将其上传到S3。有没有办法这样做?

目前,在本地保存文件存在问题,我正在寻找解决方法:Multipart transferTo looks for a wrong file address when using createTempFile

1 个答案:

答案 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