我正在使用带有简单项目的Amazon S3,当用户上传文件时,我首先使用XMLHTTPRequest将详细信息发送到我的数据库,然后触发将文件直接上传到S3的表单POST。
我无法解决的问题是如何判断上传何时完成,以便我可以正确更新显示器(我现在正在作弊,只是在显示器保存到数据库后更新显示器,你可以几乎没有告诉小上传,但从长远来看显然是一个问题。)
上传完成后,S3服务器似乎“取消导航”,因此页面不会重新加载 - 是否有任何可以用来检测上传完成时间的事件?
由于
编辑:我正在使用此处的表单代码http://s3.amazonaws.com/doc/s3-example-code/post/post_sample.html刚刚在表单发布到亚马逊之前向表单中添加了一个onsubmit,该表单将XMLHTTPRequest激发到我自己的服务器。
答案 0 :(得分:24)
Amazon S3将重定向到success_action_redirect
字段中指定的网址,或者如果未指定,则会返回一个空文档,其中包含success_action_status
中指定的状态代码。
完成POST后,用户将被重定向到您在success_action_redirect字段中指定的位置。如果Amazon S3无法解释该URL,则会忽略success_action_redirect字段。
如果未指定success_action_redirect,Amazon S3将返回success_action_status字段中指定的空文档类型。
如果POST失败,Amazon S3会显示错误,但不提供重定向。
有关详细信息,请参阅AWS docs。
答案 1 :(得分:1)
Amazon S3不会触发任何类型的事件,但是当S3返回HTTP 200状态代码时,您的XMLHTTPRequest代码应该能够触发回调。
如果S3没有返回成功的响应代码,S3很可能不知道您的上传是否完整。您是否在请求中发送了Content-Length
标题?