java - AWS S3 查询字符串请求身份验证备选上传文件

标签 java amazon-s3 amazon-web-services

有人成功过吗?

我的想法是发布到一个 servlet,它会在 servlet 对用户进行身份验证后以查询字符串请求身份验证 url 进行响应。然后用户将使用此 url 上传图片文件。

想知道这是否可能。

我不明白的是如何将图片从计算机或设备传输到 s3。

这是 StringToSign:

PUT\n
(content here?)\n
image/jpeg\n
1175139620\n
/johnsmith/photos/puppy.jpg

如何将内容插入到要签名的字符串中?我是先 base64 然后再 md-5 吗?

最佳答案

是的,这很有可能。在创建预签名 URL 后,您只需处理如何发送回 URL。可能是 XML 或纯文本..

我建议使用 jets3t 库来创建 URL。您可以调用此 API:

org.jets3t.service.S3Service.createSignedPutUrl(字符串,字符串, map ,日期, boolean 值)

您也可以改用 IAM 策略。但是您的方法更简单。

编辑:添加了更多信息..

这就是它的美妙之处,当您使用 jets3t 库时,您不需要任何这些。 只需调用方法:

 S3Service s3Service = new RestS3Service(awsCredentials);
// Create a signed HTTP PUT URL valid for 5 minutes.
   String putUrl = s3Service.createSignedPutUrl(bucket.getName(), object.getKey(),
        object.getMetadataMap(), expiryDate, false);

然后使用 URL 上传您的图片,如下所示:

SignedUrlHandler signedUrlHandler = new RestS3Service(null);
S3Object object = new S3Object(bucket,<your file object goes here>);
 S3Object putObject = signedUrlHandler.putObjectWithSignedUrl(putUrl, object);

为 signedGetURL() 编辑:

只有传入了 ProviderCredential 的才会被弃用。这个不是:

http://jets3t.s3.amazonaws.com/api/org/jets3t/service/S3Service.html#createSignedGetUrl(java.lang.String , java.lang.String, java.util.Date)

无论如何,您都不需要将凭据传递给此方法。它只是需要凭据的 s3service 对象......像这样......

S3Service s3service=new RestS3Service(credentials); // pass your credentials here
String createSignedGetUrl = s3service.createSignedGetUrl(storageObject.getBucketName(),
    storageObject.getKey(),new DateTime().plusMinutes(5).toDate());

关于java - AWS S3 查询字符串请求身份验证备选上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677696/

相关文章:

java - ApacheHttpClientHandler 与 Jersey1.18 一起使用进行 POST 请求时抛出 NullPointerException

java - "Before and After"谜题有更好的解决方案吗?

php - 在 Linux 服务器上创建 S3Client 失败

javascript - 如何用 Jest 模拟 S3?

amazon-web-services - 在 Parameter Store 中创建存储同一 Cloudformation 模板中内置 AMI 的 ImageID 的参数时出错

amazon-web-services - 组上的 AmazonS3FullAccess 托管策略不授予 S3 权限?

java - 使用 JSoup 将此 url : http://www. aw20.co.uk/images/logo.png 的内容保存到文件中

java - 如何全局应用 @JsonIgnoreProperties(value = { "id"}) 所有 POJO 类应用程序 (jackson api)

node.js - 在不下载整个文件的情况下读取和解析 S3 中的 CSV 文件

amazon-web-services - 如何创建公共(public)多区域接入点策略?