【问题标题】:Add additional parameters to send to server using fineuploader添加附加参数以使用fineuploader发送到服务器
【发布时间】:2013-12-06 05:29:22
【问题描述】:

我正在使用http://fineuploader.com/ 上传文件。完美运行。然后我在request 对象中设置params 以发送一些附加参数以发送到服务器。完美运行。然后我添加另一个参数以使用 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
});

【问题讨论】:

    标签: javascript jquery file-upload fine-uploader


    【解决方案1】:

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

    // 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 或任何其他依赖项)。

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

    【讨论】:

    • 感谢 Mark,您的推荐有效,但我在原始帖子中发布的两个解决方案也有效。你认为我应该始终如一地使用你展示的方法吗?谢谢
    • 这看起来很简单。虽然这绝对取决于你的用例,我猜。在请求中设置参数的缺点是可以使用setParams 覆盖它们(我正在考虑这是否是一个错误)。在某些情况下,您可能希望在 request 中设置默认参数,但如果在回调中满足某些条件,请更改。
    • 也许未来的方法称为addParams?是否可以向请求添加参数,然后扩展该 obj 而不是添加新的 obj defaultParams?
    • 是否有特定原因需要将参数添加到request 选项而不是扩展它们并调用setParams
    • 我在多个页面上使用fineuploader。通常,我不需要动态添加一些东西,所以使用request。这是我唯一需要做不同的事情。尽可能保持一致。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多