【发布时间】:2021-10-04 15:04:32
【问题描述】:
我正在尝试使用 Spring Boot 和 spring-cloud-starter-aws 将文件上传到 S3 Bucket。
它在我的本地运行良好,但在上传到 EBS 时,文件没有上传。
代码:
public String uploadFileToS3Bucket(MultipartFile file, String path, boolean enablePublicReadAccess) {
File fileObj = convertMultiPartFileToFile(file);
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
fileName = path +fileName;
try {
s3Client.putObject(new PutObjectRequest(bucketName, fileName, fileObj));
fileObj.delete();
}catch (Exception e) {
System.out.println("File Upload Failed due to the following: "+ e);
}
System.out.println("File uploaded : " + fileName);
return fileName;
}
convertMultiPartFileToFile 方法:
private File convertMultiPartFileToFile(MultipartFile file) {
Random rnd = new Random();
String randomVal = String.valueOf(100000 + rnd.nextInt(900000));
String fileName = randomVal + "-" + file.getOriginalFilename();
System.out.println("upload file name test:::: " + fileName);
String filePath = "";
logger.info(env.getProperty("testing"));
File convertedFile = null;
try {
convertedFile = new File(filePath + fileName);
System.out.println("The converted file: "+ convertedFile);
convertedFile.createNewFile();
FileOutputStream fos = new FileOutputStream(convertedFile);
fos.write(file.getBytes());
fos.close();
} catch (Exception e) {
System.out.println("Error converting multipartFile to file:" + e);
}
return convertedFile;
}
在日志文件中我收到以下错误:
Error converting multipartFile to file:java.io.IOException: Permission denied
File Upload Failed due to the following: com.amazonaws.SdkClientException: Unable to
calculate MD5 hash: 746350-about_us_work.jpeg (No such file or directory)
EBS IAM 角色具有 S3FullAccess。
它在本地可以完美运行,但在服务器上却不是这样。任何想法可能是什么问题?
【问题讨论】:
-
这能回答你的问题吗? Unable to calculate MD5 : AWS S3 bucket
-
你说的 EBS 真的是 Elastic Beanstalk 吗?
-
@shimo - 是 EBS -> Elastic BeanStalk
标签: amazon-web-services spring-boot amazon-s3 spring-cloud-aws