2015-10-07 2 views
0

Я хотел бы разместить несколько объектов изображений в testphp.php. но консоль печатает ошибки, говорит о незаконном вызове.Публикация файловых объектов: незаконный вызов

Я попытался:

<script type="text/javascript" src="/script/googleapis.js"></script> 


<input multiple type="file" id="myFile" size="50"> 

<div id="sub">submit</div> 

<div id="testtest"></div> 

<script> 
$("#sub").click(function(){ 
    // get the file objects 
    var files = $("#myFile")[0].files; 
    for (var i = 0; i < files.length; i++){ 
    //test if the files[i] has the file objects 
    console.log(files[i]); 
    //post objects to another php file 
    $.post("testphp.php", {img: files[i]}, function(result){ 
           $("#testtest").html(result); 
          }); 
    } 


}) 

ответ

1

Вы не можете сделать это. Если вы хотите публиковать файлы, вам нужно будет использовать FormData.

Я также предлагаю загружать все файлы одновременно, а не размещать их по одному.

Чтобы отправить сообщение FormData, вместо этого вы должны использовать $.ajax.

$("#sub").click(function(){ 
    // get the file objects 
    var files = $("#myFile")[0].files, 
     data = new FormData; 

    for (var i = 0; i < files.length; i++){ 
     //test if the files[i] has the file objects 
     console.log(files[i]); 
     //post objects to another php file 
     data.append('img[]', files[i]); 
    } 

    $.ajax({ 
     url: "testphp.php", 
     type: "POST", 
     data: data, 
     contentType: false, 
     processData: false, 
     success: function(result){ 
      $("#testtest").html(result); 
     } 
    }); 
}); 

Теперь в PHP, ваш $_FILES['img']['name'] (и другие ключи) могут быть массивами, если вы загружаете несколько файлов.

+0

Большое спасибо, он отлично работает. Хотите поделиться больше о том, что особенного в новой форме FormData? Я добрался до javascript. –

+0

'FormData' - это новая вещь (это часть XHR2). Подробнее здесь: https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects –

Смежные вопросы