添加其他参数以使用fineuploader发送到服务器

时间:2013-12-05 19:26:19

标签: javascript jquery file-upload fine-uploader

我正在使用http://fineuploader.com/上传文件。工作完美。然后,我在params对象中设置request,以发送一些其他参数发送到服务器。工作完美。然后我添加另一个参数,使用setParams和onSubmit回调发送。不能完美,因为它删除了我的原始参数。我的愿望是将最后一个参数添加到原始参数中,而不是替换它们。我的newPar是一个动态阀门,而不是我的例子中所示的常量。

我是否应该尝试在request对象中定义参数并在回调中完成所有操作? 或者使用匿名函数在request对象中设置我添加的参数? 或者其他一些方式?

var uploader = new qq.FineUploaderBasic({
    button: document.getElementById('uploader'),
    autoUpload: false,
    multiple:false,
    request: {
        endpoint: 'uploads/handleUploads.php',
        params: {id:123,task:'upload'}
    },
    callbacks: {
        onSubmit: function(id, fileName) {
            this.setParams({newPar:321});
        }
    },
    debug: true
});

1 个答案:

答案 0 :(得分:12)

您最好的选择是使用任何新参数扩展{ id: 123, task: 'upload' }中的默认参数(onSubmit)。这是一个例子:

// set your default parameters for all files via
// some object/function visible in fineuploader's scope
var defaultParams = {
    id: 123,
    task: 'upload'
}
var uploader = new qq.FineUploaderBasic({
    multiple: false,
    debug: true,
    autoUpload: false,
    button: document.getElementById('uploader'),
    request: {
        endpoint: "uploads/handleUploads.php",
    },
    callbacks: {
        onSubmit: function (id, fileName) {
            // Extend the default parameters for all files
            // with the parameters for _this_ file.
            // qq.extend is part of a myriad of Fine Uploader
            // utility functions and cross-browser shims
            // found in client/js/util.js in the source.
            var newParams = {
                newPar: 321
            },
                finalParams = defaultParams;

            qq.extend(finalParams, newParams);
            this.setParams(finalParams);
        }
    }
});

Fine Uploader有很多实用功能(docs / code),我使用其中一个 - extend - 来帮助创建我们的最终参数对象(假设你没有使用jQuery或任何其他依赖项。)

编辑:意识到您没有为特定文件设置params,而是为所有文件设置动态。