AWS S3预先签名上传:我的服务器如何验证上传是否已完成?

时间:2017-12-10 12:25:17

标签: validation amazon-web-services file-upload amazon-s3

现在这就是数据流的方式:

  1. 用户从应用服务器获得S3预先发布的帖子
  2. 用户将文档上传到S3
  3. 成功后,浏览器应用会向应用服务器发送POST,告知上传已完成
  4. 应用服务器添加带有文件上传元数据(S3键,URL等)的数据库条目
  5. 我想知道是否有办法在步骤3中验证POST请求,以确保文件实际上传(并且我没有为未上传的文件创建数据库条目)。 / p>

    有办法吗?

    现在我唯一能想到的是在步骤3的每个POST请求之后从app服务器查询S3 API,以确保文档是POST请求所在的位置。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以向表单添加FileChooser网址,这会导致S3在上传完成后将浏览器重定向回您的服务器。当您的服务器看到访问此URL时,即确认上传成功。当然,URL应该包含某种唯一标识符,以便您可以将其与特定上载进行协调。

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html

有可能在错误的时间发生错误,导致浏览器无法跟踪重定向,即使上传成功但如果重定向URL不是,则应该只是因为上传成功。 / p>

此外,正如您所注意到的,S3具有内部回调事件,可在上传完成时触发。

Does Amazon S3's HTTP Uploads feature support web-hook style callbacks?