我正在上传文件以上传最大 2GB 的大文件。因此,我需要确保即使在浏览器崩溃或其他情况后仍能继续下载。resumable.js对我来说看起来很有希望,所以我试了一下:
<a href="#" id="browseButton">Select files</a>
<!-- JAVASCRIPT -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="js/resumable.js"></script>
<script>
var r = new Resumable({
target: "upload.php"
});
r.assignBrowse(document.getElementById("browseButton"));
r.on('fileAdded', function(data) {
// File added, start uploading
r.upload();
});
r.on('fileProgress', function(data) {
console.log(Math.floor(r.progress()*100) + '%');
});
</script>
对于我的upload.php(从块中创建一个文件),我使用了这个php后端示例:https ://github.com/23/resumable.js/blob/master/samples/Backend%20on%20PHP.md
上传工作得很好,即使是大文件,但如果我不小心关闭了打开的选项卡或浏览器,我找不到任何有用的东西来恢复下载。php 后端脚本似乎已经实现了一些东西来使这项工作:
//check if request is GET and the requested chunk exists or not. this makes testChunks work
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$temp_dir = 'temp/'.$_GET['resumableIdentifier'];
$chunk_file = $temp_dir.'/'.$_GET['resumableFilename'].'.part'.$_GET['resumableChunkNumber'];
if (file_exists($chunk_file)) {
header("HTTP/1.0 200 Ok");
} else
{
header("HTTP/1.0 404 Not Found");
}
}
Resumable.js文档说:
这将允许在浏览器重新启动甚至跨浏览器后恢复上传(理论上您甚至可以跨多个选项卡或不同浏览器运行相同的文件上传)。列出的 POST 数据请求是使用 Resumable.js 接收数据所必需的
但由于我不擅长服务器端编程/配置,我不确定如何实现该功能/检查是否有可以恢复的上传。有没有人遇到过类似的问题,可以解释一下如何在浏览器重新启动后恢复下载?