继续之前需要FineUploader方法uploadStoredFiles完成

Need FineUploader Method uploadStoredFiles to Complete Before Proceeding

本文关键字:方法 uploadStoredFiles 完成 FineUploader 继续      更新时间:2024-07-03

对于一些快速后台,uploadStoredFiles()是FineUploader插件中使用的一种方法,用于将附加的文件数据异步发送到服务器路径。我还在我的应用程序中使用AngularJS。事实上,我的问题与这里的问题非常相似。。。

jQuery:等待函数完成继续处理?

最大的区别是我不能访问回调函数本身。此外,我的脚本将FineUploader作为一个较大表单的一部分运行,其中附件是可选的,因此使用FineUpload"completed"回调也没有多大帮助。

这是一个代码示例。基本上,如果没有附件,那么页面应该重新加载。如果有附件,应该上传,然后重新加载页面。

if(hasAttachments)
{
    myuploader.uploadStoredFiles();
}
//AngularJS call to refresh page
$route.reload();

大多数情况下,页面会自行刷新,文件也会从列表中丢失,直到我稍后再进行刷新。我可以硬编码一段等待时间,但这似乎效率低下,而且很糟糕。

欢迎提出任何建议或解决方案。我特别喜欢Angular式的解决方案,但我会尽我所能。

我试图将我的评论总结成一个连贯的答案:

Fine Uploader具有在某些事情发生时运行代码的事件,例如当文件提交给上传器(onSubmit)或当文件已上传(onComplete)时。

香草JavaScript看起来像

$(document).ready(function() {
    $("#triggerUpload").click(function () {
        $("#manual-fine-uploader").fineUploader('uploadStoredFiles'); 
    });
    function submitForm () { 
        if ($(this).fineUploader('getInProgress') == 0) {
            var failedUploads = $(this).fineUploader('getUploads', 
                { status: qq.status.UPLOAD_FAILED });
            if (failedUploads.length == 0) {    
                // do any other form processing here
                $("#uploader").submit();
            }
        }
    };
    // Instantiate a Fine Uploader instance:
    $("#manual-fine-uploader").fineUploader({
        autoUpload: false,
        request: {
            endpoint: "/uploads_bucket"
        }
    }).on("complete", function (event, id, name, response) {
        submitForm.call(this);
    }).on('statusChange', function (event, id, oldStatus, newStatus) {
        if (newStatus === qq.status.CANCELLED) {
            submitForm.call(this);
        } 
    });
});

您可以使用这个Angluar示例作为制作Fine Uploader指令的起点。