amazon web services Java AWS s3:如何使用Md5预签名url设置和上载内容
我正在尝试生成一个带有MD5内容的AWS预签名url。url是generate,但当我使用它上载内容时,它在HTTP 403中失败。错误
生成预签名URL的Java代码如下:
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, key, httpMethod);
byte[] resultByte = DigestUtils.md5(/*byte array*/);
String streamMD5 = new String(java.util.Base64.getEncoder().encode(resultByte));
generatePresignedUrlRequest.setContentMd5(streamMD5);
s3Client.generatePresignedUrl(generatePresignedUrlRequest);
使用预签名url上载数据的Java代码:
HttpURLConnection connection;
try {
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
OutputStream output = connection.getOutputStream();
output.write(getImage());
output.flush();
assertEquals(OK, connection.getResponseCode());
} catch (IOException e) {
LOGGER.info("Exception: {}", e);
}
我不确定需要在上传代码中添加什么才能使其正常工作
# 1 楼答案
我可以通过添加以下代码来解决此问题:
确保在构建预签名url时添加的MD5代码与用于设置“content-MD5”标题的代码相同