我想知道一些关于 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 protocol自 vimeo has also adopted it最近。 tus 是一种基于 HTTP 的可恢复文件上传协议(protocol),因此您可以在中断的地方继续上传,而无需在出现任何中断时再次重新上传整个数据。您可以找到不同语言的协议(protocol)的各种实现 here .对于 php,您可以使用 this package .
关于php - 如何在用户中止并返回时恢复文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317953/