私はユーザーがアップロードしたファイルを持っており、以下のことを達成したいと思います。ajaxを含むファイルを小さなチャンクでアップロードし、失敗したことを確認するには、失敗した部分を再アップロードします。
- ファイルを1メガバイト分の小さなチャンクに分割します。
- 各チャンクをアップロードし、次のチャンクのアップロードを開始する前に完了するまで待ちます。
- すべてのチャンクに対して、成功または失敗のレポートを取得します。
- 失敗したチャンクを再アップロードします。
- 進捗をパーセンテージで取得します。
ここにいくつかの大まかなJavaScriptがあります。私は文字通り失われている。いくつかのコードをオンラインで入手し、修正しようとしました。
$.chunky = function(file, name){
var loaded = 0;
var step = 1048576//1024*1024;
var total = file.size;
var start = 0;
var reader = new FileReader();
reader.onload = function(e){
var d = {file:reader.result}
$.ajax({
url:"../record/c/index.php",
type:"POST",
data:d}).done(function(r){
$('.record_reply_g').html(r);
loaded += step;
$('.upload_rpogress').html((loaded/total) * 100);
if(loaded <= total){
blob = file.slice(loaded,loaded+step);
reader.readAsBinaryString(blob);
} else {
loaded = total;
}
})
};
var blob = file.slice(start,step);
reader.readAsBinaryString(blob);
}
これをどのように達成できますか。実行可能な解決策があれば何が起こっているのか説明してください。
あなたはhttps://github.com/blueimp/jQuery-File-Upload/wikiを試してみました/チャンクファイルアップロード – madalinivascu
あなたは累積範囲でスライスする必要があります、チャンクサイズをロードし、ステップは一定であるようです...一般的に、問題を小さなピースに分割してみてくださいファイルからある範囲のデータをアップロードできるもの、次にapファイルのすべての部分で遠隔のアップローダを呼び出すことができ、その後エラーを処理する部分、「完了しました」と発表する部分、短くて小さな機能、1つの大きなオンロード機能 – dandavis
@dandavis私はチャンクだけを行うことができる別の機能を持っています、問題はアップロードする各チャンクを待っています。それぞれ約1MBのチャンクを含む配列です。 – Relm