在IE8 / 9中使用blueimp文件上传插件的jQuery $ _FILES数组为空

时间:2014-03-15 17:26:19

标签: javascript php jquery internet-explorer-8 blueimp

关于与IE8 / 9中的Blueimp文件上传插件相关的StackOverflow有很多问题,但我找不到与我的问题直接相关的任何内容。

我在IE8 / 9模拟器模式下使用IE10。每次PHP $ _FILES数组为空。我包括jquery.iframe-transport.js,它加载得很好。没有JavaScript错误。 $ _FILES数组只是空的。

我试过评论另一个半相关问题中推荐的dataType: 'json',行,但这没有帮助。

不知道该怎么做,找不到与此相关的任何内容。任何帮助表示赞赏。

这是JavaScript:

$('#photo-file').fileupload(
    {
        url: 'photos/upload',
        dataType: 'json',
        autoUpload: true,
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        maxFileSize: 8000000 // 8 MB
    }
)
.on(
    'fileuploadadd',
    function (e, data)
    {
        console.log('fileuploadadd');
        if (total_photos_queue < available_photos)
            total_photos_queue++;
        else
            return false;
    }
)
.on(
    'fileuploadsubmit',
    function (e, data)
    {
        console.log('fileuploadsubmit');
        progress_bar.width('0%');
        progress_bar.fadeIn();
    }
)
.on(
    'fileuploadprogressall',
    function (e, data)
    {
        console.log('fileuploadprogressall');
        var progress = parseInt(data.loaded / data.total * 100, 10);
        progress_bar.css('width', progress + '%');
    }
)
.on(
    'fileuploaddone',
    function (e, data) {
        console.log('fileuploaddone');
        $.each(
            data.result.files,
            function (index, file)
            {
                if (file.filename)
                    photo_uploaded(file.id, file.filename, file.subdir);
                else if (file.error)
                    console.log('error: ' + file.error);
            }
        );
    }
)
.on(
    'fileuploadstop',
    function (e) {
        console.log('fileuploadstop');
        progress_bar.fadeOut();
    }
)
.prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');

PHP简单(用于调试):

var_dump($_FILES); die();

1 个答案:

答案 0 :(得分:2)

我想出来了,所以对于有类似问题的人来说,我是如何解决它的。

在我的.on('fileuploadsubmit', function(e, data){ .. })活动中,我将<input type="file">设置为已禁用,以防止用户在上传文件时提交文件(我从原始示例JavaScript代码段中删除了该位发帖因为我认为这不重要。 IE8和IE9并不是这样的。将输入禁用代码放在setTimeout()中,延迟为100毫秒,解决了这个问题。