Dojo 1.10を使用してサーバーにファイルをアップロードしています。アップロードのために私はモジュールdojo/request/xhrを使い、進捗をパーセントで表示しようとしています。進捗状況のコールバックが転送の終了時に1つだけ発せられるのは混乱しています。ファイルは正常に転送されます。私のコードの断片を参照してください。Dojo 1.10およびXHR:進行コールバックが呼び出されない
function uploadFile(){
require([
'dojo/dom',
'dojo/request/xhr'
], function(dom, xhr) {
//... some unimportant code here
// Upload file now:
xhr(targetURL, {
handleAs: 'text',
method: 'POST',
headers: {'X-CSRF-Token': getAuthToken(), 'accept-charset': 'UTF-8'},
data: formData
}).then(function(data){
// Success => refresh file list
refreshDocList();
}, function(err){
// Failed
uploadFailed(err);
}, function(evt){
// Progress of upload
console.log(evt);
dom.byId('progress').innerHTML = 'Done ' + (evt.loaded * 100/evt.total) + '%';
});
});
}
私は、Firefox(45.0.1、Windowsの8.1)、クロム(49.0.2623.110メートル、Windowsの8.1)、MSIE(11.0.9600.18231、Windowsの8.1)、Firefoxでそれをテストしました( 44.0、Ubuntu 15.04)、Chrome(48.0.2564.116、Ubuntu 15.04)。上記のブラウザーのいずれにも、プログレス・コールバックは期待通りに呼び出されません。どのように私の問題を解決するためのヒント?
アップロードするファイルのサイズはどれくらいですか?プログレスイベントには解雇の時間がないのでしょうか?これをハンドリングするためのDojoコードはあります:https://github.com/dojo/dojo/blob/master/request/xhr.js#L141、dojoのソース・バージョンを使用している場合は、そこにデバッグ情報を追加してみてください – ben
小さなファイルだけでなく、大きなファイル(50MB以上)でもテストしました。同じ振る舞い。 –