我有一些代码用于在扩展客户端后自动上传图像。图像上传得很好,但是,第一次后XHR进度事件不会触发。任何帮助将不胜感激。
注意:我正在上传一个jpg的BLOB,如果这可能很重要,他们会在服务器上组装并保存它。
这是我的代码:
var uploadCameraPhoto = function ( blob, filename, dataUrl ) {
var xhr = new XMLHttpRequest();
if ( xhr.upload ) {
var formData = new FormData() ;
formData.append( 'file', blob, filename ) ;
xhr.upload.onprogress = function(e) {
console.log(e.loaded + ' / ' + e.total);
} ;
xhr.onload = function (e) {
console.log( ( ( xhr.status === 200 ) ? 'uploaded' : ( 'error: ' + xhr.status ) ) );
} ;
var action = $( 'upload' ).get( 'action' ) ;
xhr.open("POST", action, true);
xhr.setRequestHeader("X_FILENAME", filename);
xhr.send(formData);
}
} ;
答案 0 :(得分:0)
而不是:
xhr.upload.onprogress = function(e) {
console.log(e.loaded + ' / ' + e.total);
};
尝试:
function uploadProgress(e) {
if (e.lengthComputable) {
console.log(e.loaded / e.total);
} else {
console.log('Cannot compute progress.');
}
}
xhr.upload.addEventListener("progress", uploadProgress, false);