Python DropzoneJS-progressBar未等待进程结束
我目前正在将一些上传表单构建到我的Python Flask web应用程序中。我使用dropzone.js拥有强大的拖放文件处理程序 所以上传后的文件会被一些Python函数处理,处理时间可能会很长。即使后台进程没有完成,Dropzone.js的进度条也会在几秒钟内从0传递到100 我怎么能有一个真正的进度条 以下是我的JS代码:Python DropzoneJS-progressBar未等待进程结束,python,flask,dropzone.js,Python,Flask,Dropzone.js,我目前正在将一些上传表单构建到我的Python Flask web应用程序中。我使用dropzone.js拥有强大的拖放文件处理程序 所以上传后的文件会被一些Python函数处理,处理时间可能会很长。即使后台进程没有完成,Dropzone.js的进度条也会在几秒钟内从0传递到100 我怎么能有一个真正的进度条 以下是我的JS代码: Dropzone.options.myDropzone = { url: "/upload", method:'POST', autoProc
Dropzone.options.myDropzone = {
url: "/upload",
method:'POST',
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 3,
maxFiles: 3,
addRemoveLinks: true,
acceptedFiles: 'application/pdf',
dictRemoveFile: 'Annuler l\'upload',
dictDefaultMessage: 'Selectionnez un document ou glissez le',
dictInvalidFileType: 'Ce type de format n\'est pas pris en compte',
init: function() {
let dzClosure = this; // Makes sure that 'this' is understood inside the functions below.
// for Dropzone to process the queue (instead of default form behavior):
document.getElementById("submit-all").addEventListener("click", function(e) {
// Make sure that the form isn't actually being sent.
e.preventDefault();
e.stopPropagation();
dzClosure.processQueue();
});
this.on("successmultiple", function(files, response) {
let topPx = 0;
for (let i = 0; i <= files.length; i++) {
if (i > 0) { topPx = 80 * i }
$("<div style='top: " + topPx + "px;' class='flash' onclick=\"$('.flash').fadeOut()\">Fichier(s) uploadé(s) avec succès : " + files[i]['name'] + "</div>").insertAfter($('.content'));
}
});
this.on("error", function(file, response) {
$("<div class='flash' onclick='$('.flash').fadeOut()'>Erreur lors de l'upload des fichiers : " + response + "</div>").insertAfter($('.content'));
});
}
};
这是python.main中的worker\u调用,需要花费处理时间
提前谢谢
@bp.route('/upload', methods=['GET', 'POST'])
@login_required
def upload():
if request.method == 'POST':
for file in request.files:
f = request.files[file]
f.save(os.path.join(current_app.config['UPLOAD_FOLDER'], secure_filename(f.filename)))
worker_from_python.main({
'path' : current_app.config['UPLOAD_FOLDER'],
'config': current_app.config['CONFIG_FILE']
})
os.remove(os.path.join(current_app.config['UPLOAD_FOLDER'] + secure_filename(f.filename)))
return redirect('/upload')
return render_template('pdf/upload.html')