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

4 php forms file-upload http

我想知道一些关于 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> 
Run Code Online (Sandbox Code Playgroud)

我的 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;
}
Run Code Online (Sandbox Code Playgroud)

实际问题

用户采取以下步骤:

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

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

  • 用户退货
  • 用户选择相同的文件
  • 用户提交表单
  • 上传从上次停止的点恢复

我想知道的是这是否可行以及我如何实现这一目标。

Kon*_*ole 5

另一个好方法是使用tus 协议,因为vimeo 最近也采用了它。tus 是一种基于 HTTP 的可恢复文件上传协议,因此您可以从中断的地方继续,而无需再次重新上传整个数据,以防万一。您可以在此处找到不同语言的协议的各种实现。对于 php,你可以使用这个包