gpt4 book ai didi

java - 为 Amazon S3 生成具有最大内容长度的预签名 PUT url

转载 作者:搜寻专家 更新时间:2023-11-01 00:55:02 24 4
gpt4 key购买 nike

我正在尝试生成一个预签名的 URL,客户端可以使用它来将图像上传到特定的 S3 存储桶。我已成功生成对 GET 文件的请求,如下所示:

GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucket, filename);
urlRequest.setMethod(method);
urlRequest.setExpiration(expiration);

其中 expiration 和 method 分别是 Date 和 HttpMethod 对象。

现在我正在尝试创建一个 URL 以允许用户 PUT 文件,但我不知道如何设置最大内容长度。我确实找到了关于 POST policies 的信息, 但我更喜欢在这里使用 PUT - 我也想避免构建 JSON,尽管这似乎不可能。

最后,另一种方法可能是通过某种方式将图片从 API 网关上传到 Lambda,这样我就可以在验证文件类型和大小后将其从 Lambda 上传到 S3(这并不理想)。

最佳答案

虽然我无法限制上传文件的大小,但我最终创建了一个 Lambda 函数,该函数在上传到临时存储桶时激活。该函数具有如下签名

public static void checkUpload(S3EventNotification event) {

(这是值得注意的,因为我在网上找到的所有指南都引用了一个似乎不再存在的 S3Event 类)

该函数提取文件的元数据(不是文件本身,因为这可能算作大量下载)并检查文件大小。如果可接受,它会下载文件,然后将其上传到目标存储桶。如果不是,它只会删除该文件。

这远非理想,因为不符合标准的上传似乎有效,但根本不会显示(因为 S3 会在上传时发出 200 状态代码,而不关心 Lambda 的响应是什么)。

这实际上是一种解决方法而不是解决方案,因此我不会接受这个答案。

关于java - 为 Amazon S3 生成具有最大内容长度的预签名 PUT url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38187832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com