元素的FormData不起作用 - Internet Explorer 10

Cle*_*lem 2 javascript php jquery internet-explorer form-data

我正在使用上传文件,jQuery.ajax并且除了Internet Explorer 10之外,一切在Google Chrome,Mozilla Firefox,Opera等现代浏览器中都很完美.

new FormData($('.uploadForm')[0])在IE10中不起作用,但如果我只尝试使用这段代码:new FormData($('.uploadForm'))它可以工作......看起来它不接受特定索引处的元素或其他东西?我不明白这真的很好,这就是为什么我在寻求帮助的原因.

IE10的这个例子是否存在任何变通方法?

JS:

var form = new FormData($('.uploadForm')[0]);
config.progressBar.progressWidth = 0;
$('.uploadForm .valueBox').fadeOut('slow',function(){
    $(this).addClass('hidden')
    $('.meter').removeClass('hidden').width(config.progressBar.width);
    $.ajax({
        url: '../../uploads/some.php',
        type: 'POST',
        xhr: function() {
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){
                myXhr.upload.onprogress = progress;
            }
            return myXhr;
        },
        success: function (res) {
            console.log(res)
        },
        data: form,
        cache: false,
        contentType: false,
        processData: false
    });
Run Code Online (Sandbox Code Playgroud)

some.php代码和平:

foreach($_FILES["file"]["error"] as $key => $value) {
    if ($value == UPLOAD_ERR_OK){

        $name = $_FILES["file"]["name"][$key];

        $arr_files = getimagesize($_FILES["file"]["tmp_name"][$key]); 
        $width = $arr_files[0];
        $height = $arr_files[1];
        $mime = $arr_files['mime'];

        copy($_FILES['file']['tmp_name'][$key], '../uploads/upload/'.$name);

        echo json_encode($_FILES);
    }
}
Run Code Online (Sandbox Code Playgroud)

抛出IE10错误: SCRIPT5: Access is denied.

Pri*_*ner 6

不要将文件传递给构造函数,而是使用append,如:

var formData = new FormData();
formData.append('file', $('input[type=file]')[0].files[0]);
Run Code Online (Sandbox Code Playgroud)