0

我正在将 AJAX 上传器http://valums.com/ajax-upload/集成到我的应用程序中。默认情况下,脚本会将上传的文件转储到一个指定的目录中。我对其进行了修改,使其接收参数:两个文件夹的名称 - 年和月,因此它可以是例如 uploads/2010/May/ 而不是 uploads/ 但它仍会将文件转储到 uploads 文件夹中,除非我明确说明这两个文件夹名称作为字符串。

下面的代码在我的 $(document).ready 函数中。

var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"],
    params: {
        f: '2010',//document.getElementById('fileyear').value,
        g: 'May'//document.getElementById('filemonth').value
    }       
});

如上所示,我评论了实际的行,而是使用了虚拟值来检查[并且它以这种方式工作正常]。

我尝试过使用 f: $(#fileyear).val(), g: $(#filemonth).val() 并且它不起作用,所以我不得不像上面一样默认为 document.getElementById。在上传者变量之外,这两个值是正确的。

一个不同的函数将日期存储到那些隐藏的输入中,我将它们更改为普通的文本输入,以确保它正确存储它们。

我猜这里的问题可能只是上传者可能在创建(空白)值之前设法获取它们?还是这与上传有关?或者我的文件准备好了有什么问题?请我真的需要帮助 - 我整天都在努力解决这个问题。提前致谢!

4

2 回答 2

2

您为 etc. 获取的document.getElementByID('fileyear').value值将是 DOM 加载后立即的值,而不是您随后通过键入表单将其更改为的值。

我会将“f”和“g”选项设置为上传者调用的函数以获取这些值。这样,您将获得调用时的值,而不是它们的初始值(空?)。

于 2011-01-19T15:44:03.080 回答
0
var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"] 
});

$('your_button_id').click(function(){
    uploader.setParams({
        f: document.getElementById('fileyear').value,
        g: document.getElementById('filemonth').value
    });
});  

或者

var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"],
    params: {
        f: (document.getElementById('fileyear')) ? document.getElementById('fileyear').value : 2010,
        g: (document.getElementById('filemonth')) ? document.getElementById('filemonth').value : 'May'
    }       
}); 
于 2011-01-19T16:03:12.473 回答