1

我通过直接提交到存储桶 URL 直接上传到 Amazon S3。

页面模拟如下:

<div id="one">
    <upload image form>
</div>

<div id="two>
    <information form>
</div>

div "two" 默认是隐藏的。当用户以上传图片的形式推送提交时,会调用 .submit() 钩子并隐藏 div 一。显示第二部分,用户输入有关正在上传的图像的附加信息。

但是我的问题是,如果要上传的图像很大并且取决于连接,上传可能需要一分钟或更长时间,所以如果用户在上传完成并提交之前完成第二个表单,那么上传就会被切断。

亚马逊允许你重定向到一个页面,所以我重定向到 PHP_SELF,所以当上传完成时,用户不知道有什么区别。

所以我的问题是是否可以检测上传进度或禁用 div 2 中的提交按钮,直到上传完成。

我想支持大多数浏览器,所以 CORS/.put() 对我来说并不是一个真正的选择。

我也喜欢我直接推向亚马逊并跳过中间人的事实。

我试过了:

isset($_POST)

检测上传何时完成重定向,但它从未被调用,我不知道为什么。

浏览器显示上传百分比(状态栏)有没有办法挂钩?

4

1 回答 1

0

为了可用性,如果

  • 用户可以立即输入图像信息
  • 看到上传进度指示器
  • 不需要为一个信息单元提交两份表格

如果您使用 jquery 上传图像,您可以配置一个回调函数,然后自动提交数据表单。

删除其中一个提交按钮,添加单击事件处理程序而不是真正提交表单。

这个事件处理程序将

  • 评估表单输入
  • 上传文件
  • 显示进度(可以只是一个“上传等待...”)
  • 为上传完成定义回调。

然后回调只需要提交第二个表单

于 2013-01-30T06:55:11.553 回答