3

最大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 を使用してデータを受信するために必要です。

しかし、私はサーバー側のプログラミング/構成が得意ではないため、その機能を実装する方法がわかりません/再開できるアップロードがあるかどうかを確認します. 同様の問題に遭遇し、ブラウザの再起動後にダウンロードを再開する方法を説明できる人はいますか?

4

1 に答える 1