作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用预签名 url 上传图像时遇到问题。我正在关注亚马逊 java 代码,但它不起作用。
我的需求如下我已在 Amazon XYZBucket
上创建了存储桶,但我的存储桶是空的。我充当服务器,向用户提供预先签名的 url,用户将使用此 url 上传图像。
生成预签名 URL 的代码
AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
URL url = null;
try {
java.util.Date expiration = new java.util.Date();
long milliSeconds = expiration.getTime();
milliSeconds += 1000 * 60 * 60 * 12; // Add 1 hour.
expiration.setTime(milliSeconds);
GeneratePresignedUrlRequest generatePresignedUrlRequest =
new GeneratePresignedUrlRequest(bucketName, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(expiration);
url = s3client.generatePresignedUrl(generatePresignedUrlRequest);
} catch (AmazonServiceException exception) {
} catch (AmazonClientException ace) {
}
return url.toString();
我也使用了 put 方法
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
java.util.Date expiration = new java.util.Date();
long msec = expiration.getTime();
msec += 1000 * 60 * 60; // Add 1 hour.
expiration.setTime(msec);
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.PUT);
generatePresignedUrlRequest.setExpiration(expiration);
URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);
return url.toString()
我的bucketName和objectkey是
XYZBucket
和 file1
当我在浏览器中点击网址时,它会显示给我
SignatureDoesNotMatch
错误。
任何人都可以帮助我使用预先签名的 url 将文件上传到 s3 存储桶吗?
最佳答案
根据AWS documentation ,您应该使用“PUT”方法创建“上传”URL。然后,用户将在此 URL 上发出“PUT”请求来上传其文件。
在浏览器中点击此 URL 将发出“GET”请求,但签名包含“PUT”,因此会引发 SignatureDoesNotMatch
错误。
关于java - 想要使用预先签名的 url 将文件上传到 s3 存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30774189/
我是一名优秀的程序员,十分优秀!