3

ファイル API を使用して、外部ライブラリを使用せずに HTML5 アップローダをゼロから作成しました。150 MB を超えるファイルをアップロードしようとするまでは正常に動作していました。この時点で、ファイルをチャンクとしてアップロードする必要があることに気付きました。

Javascript 側は、ファイルを分割してアップロードしている他の誰かによってソートされています。私は PHP 側に取り組んでおり、これらのチャンクを再結合する方法を理解するために何を調べる必要があるかを知る必要があります。

各チャンクのヘッダーを変更する必要がありますか?

次のチャンクを待っている間にチャンクをキューに入れるにはどうすればよいですか?

私たちはこれを長い道のりで行っていますか?

4

1 に答える 1

2

Javascript 側を実行している gui と話すか、少なくとも彼から完成したスクリプトを取得してコードを確認する必要があるように見えます。おそらく、チャンク番号はリクエストのヘッダーの 1 つで送信されます。

さまざまなphpスクリプトでチャンクを受け取るので、それらをデータベースまたはファイルシステムに保存することをお勧めします。本当にファイルシステムに行きたい場合は、チャンク番号も追加する必要があるため、ファイルシステムでは少し難しくなりますpath 名前としてファイル名を持ち、そのフォルダー内のファイルとしてチャンクを 0...chunk_count-1 として持つフォルダーにそれらを保存することをお勧めします。

また、ヘッダーを介してチャンクの総数を受け取り、アップロード後にチャンクの数を比較する必要があります。すべてのチャンクを取得したら、チャンク ID の順に組み立てます。これにファイルシステムを使用する場合は、すべてのファイルが実際に完全に書き込まれるように注意する必要があります (通常、合計サイズが元のサイズと一致する場合)。データベースでは、すべてのデータが揃っているときに行を挿入できるため、これがはるかに簡単になります。

すべてのファイルが完全に書き込まれていることを確認するファイルシステムの方法の回避策は、それらを別のフォルダーに書き込み、書き込みが完了したら宛先フォルダーに移動することです..両方のフォルダーが同じファイルシステム上にある必要があるため、移動は行われません代わりにコピー + 削除を生成します。

于 2012-10-12T10:46:40.990 に答える