upload plug-in doesn't show the progress in xx%, but only 100%
upload plug-in doesn't show the progress in xx%, but only 100%
It's still the upload plug-in problem. Is there anything I'm missing to show the upload progress in the page. I can upload the file but can only see the 100% in the button, but cannot see 10%, 20%...90%..etc. The following is my codes.
function uploadFile ( editor, conf, file ){
var data = new FormData();
var ajax;
var guid = editor.s.fields.guid.s.opts._val;
data.append( 'action', 'upload' );
data.append( 'uploadField', conf.name );
data.append( 'upload', file );
data.append( 'guid', guid );
if ( typeof editor.s.ajax !== 'string' && ! conf.ajax ) {
throw 'No Ajax option specified for upload plug-in';
} else if ( conf.ajax ) {
ajax = conf.ajax;
} else {
ajax = editor.s.ajax;
}
if ( typeof ajax === 'string' ) {
ajax = { url: ajax };
}
// Use preSubmit to stop form submission during an upload, since the
// value won't be known until that point.
var submit = false;
editor
.on( 'preSubmit.DTE_Upload', function () {
submit = true;
return false;
} );
$.ajax( $.extend( ajax, {
type: 'post',
// url: 'ajax/filesupload_json.php', //url在editor時就有定義了 會直接帶進來
data: data,
async: true,
cache: false,
dataType: 'json',
contentType: false,
processData: false,
xhr: function() {
var xhr = $.ajaxSettings.xhr();
//绑定上传进度的回调函数
xhr.upload.addEventListener('progress', progress, false);
return xhr;//一定要返回,不然jQ没有XHR对象用了
},
xhrFields: {
onsendstart: function() {
//this是指向XHR
this.upload.addEventListener('progress', progress, false);
},
onprogress: function ( e ) {
if ( e.lengthComputable ) {
var percent =(e.loaded / e.total *100|0)+"%";
buttonText( conf, percent );
}
},
onloadend: function ( e ) {
// buttonText( conf );
}
},
success: function ( json ) {
editor.off( 'preSubmit.DTE_Upload' );
$.fn.dataTable.Editor.fieldTypes.upload.set.call( editor, conf, json.upload.id, json.upload.row );
if ( submit ) {
editor.submit();
}
}
} ) );
};
function buttonText ( conf, text ){
if ( text === null || text === undefined ) {
text = conf.uploadText || "Choose file...";
}
conf._input.find('div.upload button').text( text );
};
This question has an accepted answers - jump to answer
This discussion has been closed.
Answers
I've replace the xhrFields with the following and it's working very well:
removed codes:
new codes:
Good to hear you got it working in your setup.
Allan