3

我已经在网上查了这个网站,但找不到解决我的问题的方法。

我正在尝试使用 JQuery 文件上传插件,并进行了一些修改以将文件类型限制为 CSV 和 XML,以及仅限于 1 个文件和每个文件最多 5MB。这些新属性运行良好,并且在除 IE 之外的所有浏览器中也运行良好。

我在 fileupload 事件上绑定了一个事件,它将 CSV 呈现为 HTML 表。这适用于除 IE 之外的所有浏览器。在 IE 中,它要么抛出错误,要么冻结,右上角的绿色进度条显示以下信息:

7.123775601068567 比特/秒 | 00:00:00 | 100.00 % | 0.00 KB / 0.00 KB

它实际上看起来像挂起,因为它似乎没有完成上传。当我重新加载同一页面时,它会显示正确的显示!没有进度条!

更新:当我简单地上传 CSV 文件时,代码很好。现在,当我尝试包含回调选项时,问题就出现了。它似乎与我从 'fileuploaddone' 更新的 'fileuploadcompleted' 事件有关,它改进了结果但仍然不正确,并且根本不执行和呈现 HTML 表(例如,请参见上面的链接)

// Load existing files:
$('#fileupload').each(function () {
    var that = this;            
    $.getJSON(this.action, function (result) {
        if (result && result.length) {
            $(that).fileupload('option', 'done')
                .call(that, null, {result: result});
        }
    });
}).bind('fileuploadcompleted', function (e, data) {         
    //console.log('fileuploaddone:start');
    var $filename = $('#fileupload td.name').text().trim();
    //console.log('filename is ' + $filename);

$.get('../jQuery-File-Upload/server/php/files/' + $filename, function(data) {
        $('#CSVSource').html('<pre>' + data + '</pre>');
});
$('#CSVTable').CSVToTable('../jQuery-File-Upload/server/php/files/' + $filename,{ 
        loadingImage: 'img/loading-table.gif', 
        startLine: 0 }).bind("loadComplete",function() {//for future use});
    }).bind('fileuploaddestroy', function (e, data) {
        //console.log('fileuploaddestroy');
        $('div#CSVTable').fadeOut(1000);            
    });

任何想法如何让它在 IE 中工作?

非常感谢。

4

1 回答 1

1

好的,经过大量挖掘,问题得到了解决,尽管解决方案非常简单,并且已在此处介绍:

如何处理ie8 jquery object does not support this property or method Error?

所以基本上在上面的代码中,我应该一直使用 JQuery 版本的 trim,更新如下:

var $filename = $.trim($('#fileupload td.name').text());

以某种奇怪的方式发布问题帮助我解决了这个问题:)

作为旁注:我还注意到,如果您对“上传”网页所在的文件夹有 htaccess 限制,那么您在 IE 中也可以有不同的行为。例如,在设置了访问限制的情况下,尽管上传,但它不会显示实际上传的文件,但上传仍然有效。当您删除文件时,它会要求您登录。

于 2012-10-15T21:46:49.260 回答