public void upload(MultipartFile multipartFile, boolean publicAccess) {
String fileName = this.generateUniqueFilename(multipartFile);
try {
File file = new File(Objects.requireNonNull(fileName));
FileOutputStream outputStream = new FileOutputStream(file);
outputStream.write(multipartFile.getBytes());
outputStream.close();
PutObjectRequest request = new PutObjectRequest(this.awsS3UploadBucket, fileName, file);
if (publicAccess) {
request.withCannedAcl(CannedAccessControlList.PublicRead);
}
this.amazonS3.putObject(request);
} catch (Exception exception) {
logger.error("error [" + exception.getMessage() + "] occurred while uploading [" + fileName + "] ");
}
}
generateUniqueFilename
为上传的文件生成一个唯一的名称。例如143119066552807424.png
。
代码运行时出现此异常
error [The request signature we calculated does not match the signature you provided. Check your key and signing method.
(Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: XXX; S3 Extended Request ID: XXXX)] occurred while uploading [143119066552807424.png]
我在Google上进行了一些研究,但未找到任何资源来说明我如何正确签署请求。谁能解释为什么此代码未运行?