2016-04-22 04:41
浏览 260


I have an ajax formdata

<form id="form" action="index.php?id=upload" method="post" enctype="multipart/form-data">

    <input id="files" multiple="true" name="files[]" type="file" />


I want send this form via dataform sequently.

So I create a loop jn jquery to read each file, So per file I have this:

var data = new FormData();
        data.append(, file);

            url: 'index.php?id=upload',
            type: 'POST',
            contentType: false,
            cache: false,
            data: data,

in php code when I print var_dumb($_FILES) I get this result:

names:"array(1) { ["8_modem_pool_with_small_and_big_jpg"]=> array(5) { ["name"]=> string(35) "8 modem pool with small and big.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(24) "F:\xampp\tmp\php268B.tmp\"
["error"]=> int(0) ["size"]=> int(99790) }}

how can I get $_FILES value in server side? I try




but none of them not works.


thanks for answers. but them are not my answer.

in php when I use


Iget this error:

Undefined index

But I can print values by this code:

foreach($_FILES as $index => $file) {

I hope you underestand me....

I want something like this:

   //do action for single file
   // do action for array file

lastest code works for normal form,But not work for formdata.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dongyi2006
    dongyi2006 2016-04-22 05:43

    You can try loop through this 3 level associate array with a for loop:

        for($i=0;$i < count($_FILES['8_modem_pool_with_small_and_big_jpg']['name']);$i++){
            //Do whatever with the file:
            echo $_FILES['8_modem_pool_with_small_and_big_jpg']['name'][$i];
            echo $_FILES['8_modem_pool_with_small_and_big_jpg']['type'][$i];
            echo $_FILES['8_modem_pool_with_small_and_big_jpg']['tmp_name'][$i];
    点赞 评论
  • doukoumi3389
    doukoumi3389 2016-04-22 04:53

    try the following:

    move_uploaded_file( $_FILES['names']['8_modem_pool_with_small_and_big_jpg']['tmp_name'], $target);//target is the new file location and name

    for multiple files use a loop

    foreach($_FILES['names'] as $index => $file) {
         $target = '/img/'.$file['name']
         move_uploaded_file( $file['tmp_name'], $target);
    点赞 评论
  • doujin8673
    doujin8673 2016-04-22 04:58

    It depends on what values you want. All of them are visible in the array.

    If you want the name you can use


    To store the file to a specific location you can use

    move_uploaded_file( $_FILES['names']['8_modem_pool_with_small_and_big_jpg']['tmp_name'], $myFile);
    点赞 评论