アップロード スクリプト:
$('#fileupload').fileupload({
url: 'api/combox_upload.php',
type: 'POST',
dataType: 'json',
dropZone: $dropZone,
singleFileUploads: true,
done: function (e, data) {
attachments = attachments.concat(data.result);
refreshAttachments();
},
add: function(e, data) {
var file = data.files[0];
data.context =
$('<li>',{'class':'file-upload-item'})
.append($('<span>').text(file.name))
.append(
$('<div>',{'class':'progressbar'})
.append($('<div>',{'class':'progress'}))
).appendTo($fileUploads);
data.submit(); // start upload immediately
},
progress: function(e, data) {
var progress = data.loaded / data.total;
data.context.find('.progress').stop().animate({'width':(progress*100)+'%'},100,'linear');
//data.context.find('.progress').css({'width':(progress*100)+'%'});
}
});
私のapi/combox_upload.php
スクリプトでは、私echo json_encode($_FILES)
と半分の時間は空白に戻ります (Chrome 開発者ツールバーで XHR 要求の応答を見ています)。
何故ですか?常にファイルを送信するように修正するにはどうすればよいですか?
編集:大きなファイルではより頻繁に発生するようです。
マルチパート データを正しく処理しない PHP の問題でしょうか? ファイルのアップロードが開始されるとすぐに、XHR リクエストがすぐに送信されることに気付きましたが、PHP は明らかにファイル全体をまだ取得していません。オブジェクトにアクセスしようとするとブロックされます$_FILES
か、それとも空の配列が返されるだけですか? 何か特別なことをしなければなりませんか?