【问题标题】:Can .submit() be checked for completion. I can't use .put()可以检查 .submit() 是否完成。我不能使用 .put()
【发布时间】:2023-04-05 22:43:01
【问题描述】:

我通过直接提交到存储桶 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)

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

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

【问题讨论】:

  • 如果如你所说,“浏览器显示上传百分比(状态栏)”,那么你写的不仅仅是模拟的HTML。
  • 请不要将标签复制到标题中。

标签: php jquery amazon-s3 amazon


【解决方案1】:

为了可用性,如果

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

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

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

此事件处理程序将

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

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

【讨论】:

    猜你喜欢
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多