5

使用 Valums Ajax 文件上传器时,如何触发上传?

默认行为是在用户选择文件后立即开始上传。我想防止这种情况发生,而是在用户选择文件后单击单独的“上传”按钮时触发上传。

我查看了代码,发现上传从change附加到文件输入的事件开始。我首先添加return false;onSubmit函数,然后将点击事件附加到触发更改事件的另一个按钮:

$('#startUpload').on('click', function() {  
    // some conditionals
    $('input[name="file"]').trigger('change');  
});

那是行不通的。它只是再次打开文件菜单。

如何防止在用户选择文件后立即发生上传,而是在用户单击另一个按钮时触发它?

4

2 回答 2

3

为此,您必须修改 file-uploader.js 文件。在第 309 行,修改 onChange 函数以返回 false。然后在它上面添加如下函数,这样代码就变成了:

startUpload: function(){
    this._onInputChange(this._button.getInput());
},
_createUploadButton: function(element){
    var self = this;

    return new qq.UploadButton({
        element: element,
        multiple: this._options.multiple && qq.UploadHandlerXhr.isSupported(),
        onChange: function(input){
            return false;
        }
    });
},

然后在您的 HTML 文件中,在您的按钮单击或任何其他事件中,调用

uploader.startUpload();

其中 uploader 是您的 qq.FileUploader() 对象的名称。

希望有帮助:)

于 2012-06-05T19:39:13.960 回答
2

Valums Ajax 文件上传器现在支持此功能。您可以对文件进行排队并在按钮单击时触发上传

 var uploader2 = new qq.FileUploader({
    element: $('#manualUploadModeExample')[0],
    action: "success.html",
    autoUpload: false,
    demoMode: true,
    uploadButtonText: "Select Files"
});

$('#triggerUpload').click(function() {
    uploader2.uploadStoredFiles();
});

有关更多信息,请查看此链接:valuems file uploder

于 2012-09-15T07:57:09.013 回答