php - 如何在用户中止并返回时恢复文件上传

标签 php forms http file-upload

我想知道一些关于 PHP 文件上传的事情,以及如何最好地处理这种技术的某些方面。我根据 W3Schools 示例制作了一个小脚本,以更好地说明这个问题的目的。

如果用户在上传文件时关闭浏览器怎么办?

好吧,如果我错了请纠正我,但我认为该文件仍将位于您的/tmp/目录中,并且在清理/tmp/目录之前不会被删除。

如果我想恢复上传,该怎么办?

这是我无法回答的问题。这就是为什么我在这里发布我的问题。简而言之:当用户关闭浏览器或离开页面后返回时,我如何恢复用户的上传?

我的表单

 <form enctype="multipart/form-data" action="upload.php" method="POST">
     Please choose a file: <input name="uploaded" type="file" /><br />
     <input type="submit" value="Upload" />
 </form> 

我的PHP

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $target = "upload/"; 
     $target = $target . basename( $_FILES['uploaded']['name']);
     if (!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) {
        die ("There was a problem while uploading your file");
     }
     header("Location: index.php");
     exit;
}

实际问题

用户执行以下步骤:

  • 用户选择一个文件
  • 用户上传表单
  • 用户关闭浏览器

现在我希望发生以下情况:

  • 用户返回
  • 用户选择相同的文件
  • 用户提交表单
  • 从上次停止的点继续上传

我想知道这是否可能以及我如何实现。

最佳答案

另一个好方法是使用 tus protocolvimeo has also adopted it最近。 tus 是一种基于 HTTP 的可恢复文件上传协议(protocol),因此您可以在中断的地方继续上传,而无需在出现任何中断时再次重新上传整个数据。您可以找到不同语言的协议(protocol)的各种实现 here .对于 php,您可以使用 this package .

关于php - 如何在用户中止并返回时恢复文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317953/

相关文章:

javascript - 如何使用 Fuel UX Pillbox 作为 HTML 表单中的元素?

javascript - 如何使用node js从http(GET)响应中获取巨大的字符串数据而无需缓冲?

python - Tornado/Flask 无法正确响应 OPTIONS

php - 如何判断用户的首选国家/语言是什么?

php - Magento:在后端数据网格的列中显示不同的操作链接

arrays - 如何使用 Django 在 HTML post 请求中发送数组

javascript - 如何清除加载ajax的表单?

google-chrome - 即使返回的内容具有 header Content-Type :text/html; charset=UTF-8,Chrome 开发工具也无法显示响应

php - 接收 Laravel 中所有 View 中侧边菜单的数据

php - 表单生成器中的过滤器集合 [symfony2]