如何重置blueimp jQuery fileupload插件?

要点:我怎样才能重置一个blueimp jQuery fileupload插件,以便它认为没有上传文件?

我的情景

  • 我有一个只允许上传一个文件的上传表单。
  • 上传该文件后,将对其进行分析。 此时,用户可以选择单击“取消”按钮,在此重置我的视图模型的其余部分。
  • 当用户点击取消时,我想重置用户上传的文件数,因为它们基本上是刚开始的。
  • 我仍然希望在重置后应用最大的一个文件。

目前发生了什么

  • 上传一个文件
  • 单击取消按钮,一切都重置(即我重新初始化文件上传控件)
  • 尝试上传文件,但仍然告诉我们已达到最大文件数。

我试过的

我尝试调用fileupload(’destroy’)然后重新初始化,但似乎没有结果(我希望破坏也会破坏实例的跟踪)。

我的问题:

  • 销毁/重新初始化/重置上传控件的最佳方法是什么,好像它是从头开始的?
  • 如果没有,有没有办法以编程方式让blueimp认为零文件已经上传后,有效地重置它? 在此先感谢您提供任何帮助!

关于版本的说明:

仅供参考,我在v8.8.1上 – 我宁愿不升级,因为一位同事以某种特定的方式改变了一些代码 – 呃。 我们计划在预定日期删除此自定义和升级。 如果我必须更新以解决此问题,请随时告诉我,因为这是完全公平的。

更新:一些代码

页面上的第一个文件上传控件:

Add files...
 
A summary document has been uploaded.
Please fill out invoice information before uploading a file.

页面上的第二个文件上传控件:

 
0 || (!InvoiceHasSummaryDocument())">
Add files...
 
NOTE: Only Excel 2007+ (.xlsx) files are accepted. <a href="https://stackoverflow.com/questions/21187635/how-can-i-reset-a-blueimp-jquery-fileupload-plugin/" target="_blank" id="A1">Need a blank Invoice Upload template?
0">Invoice details have been uploaded. Please upload a summary file prior to uploading a details file.
{% for (var i=0, file; file=o.files[i]; i++) { %}

{%=file.name%}

{% if (file.error) { %}
Error: {%=file.error%}
{% } %}

{%=o.formatFileSize(file.size)%}

{% if (!o.files.error) { %}
{% } %} {% if (!o.files.error && !i && !o.options.autoUpload) { %} {% } %} {% if (!i) { %} {% } %} {% } %}

我可以使用以下方法清除第一个控件:

  $("tbody.files").empty(); 

大概是因为该文件已经在那个时候上传了(这很好)。

但是,这不适用于第二种forms。 我试过了:

  $("#detailsFileUploadForm").find('.cancel').click(); 

这使得项目从页面中消失,但是在添加其他文件时它们会重新出现。

我也试过$("#detailsFileUploadForm").fileupload('destroy')没有成功(大概是因为它不处理这些函数而且更多的是关于绑定。

对此的答案比我预期的要简单得多:

 $("table tbody.files").empty(); 

以前,我认为我做得太多了 – 试图销毁/重置容器也不行。

使用这一行代码,列表似乎重置,据我所知,所有代码都运行良好。

这是重置jquery-fileupload的理想解决方案

在文件“main.js”中只需删除或评论加载现有文件脚本,如下所示:

 if (window.location.hostname === 'blueimp.github.io') {        // Demo settings:        $ ('# fileupload'). fileupload ('option', {            url: '//jquery-file-upload.appspot.com/',            // Enable image resizing, except for Android and Opera,            // which actually support image resizing, but fail to            // send Blob objects via XHR requests:            disableImageResize: /Android(?!.*Chrome)|Opera/                .test (window.navigator.userAgent)            maxFileSize: 999000,            acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i        });        // Upload server status check for browsers with CORS support:        if ($ .support.cors) {            $ .Ajax ({                url: '//jquery-file-upload.appspot.com/',                type: 'HEAD'            }). fail (function () {                $ ('
') .text ('Upload server currently unavailable -' + new Date ()) .appendTo ( '# fileupload'); }); } } else { // Load existing files: / * $ ('# fileupload'). addClass ('fileupload-processing'); $ .Ajax ({ // Uncomment the following to send cross-domain cookies: // xhrFields: {withCredentials: true}, url: $ ('# fileupload'). fileupload ('option', 'url') dataType: 'json', context: $ ('# fileupload') [0] }). always (function () { $ (This) .removeClass ( 'fileupload-processing'); }). done (function (result) { $ (this) .fileupload ('option', 'done') .call (this, $ .Event ('done'), {result: result}); }); * /}

所以你必须清除或评论部分“//加载现有文件”