2013-07-12 2 views
0

Я использую html5 js to upload multiple images. Почему при загрузке нескольких изображений результат (PHP: print_r($_FILES['upimg']['name'])) показывает только данные последнего выбранного изображения?Получение сведений о выбранных изображениях в php

Для примера: (я выбрано следующее имя изображения)

111111.gif

222222.gif

333333.gif

кода PHP только в прошлом выбранное изображение шоу : 333333.gif

Но я wan t, чтобы отображать детали из всех изображений.

Что мне делать?

DEMO: http://codepad.viper-7.com/16abeG

ПОЛНЫЙ КОД:

<!doctype html> 
<html> 
<head> 
    <?php 
if($_FILES){ 
    echo '<pre>'; 
    print_r($_FILES['upimg']['name']); 

     //for($i=0; $i<count($_FILES['name']); $i++){ 
      //if ($_FILES['error'][$i] == 0) { 
       ////do your stuff here, each image is at $_FILES['tmp_name'][$i] 
      //} 
     //} 
    } 
?> 
    <title>file input click() demo</title> 
    <script type="text/javascript"> 
    function doClick() { 
     var el = document.getElementById("fileElem"); 
     if (el) { 
     el.click(); 
     } 
    } 
    function handleFiles(files) { 
     var d = document.getElementById("fileList"); 
     if (!files.length) { 
     d.innerHTML = "<p>No files selected!</p>"; 
     } else { 
     var list = document.createElement("ul"); 
     d.appendChild(list); 
     for (var i=0; i < files.length; i++) { 
      var li = document.createElement("li"); 
      list.appendChild(li); 

      var img = document.createElement("img"); 
      img.src = window.URL.createObjectURL(files[i]);; 
      img.height = 60; 
      img.onload = function() { 
      window.URL.revokeObjectURL(this.src); 
      } 
      li.appendChild(img); 

      var info = document.createElement("span"); 
      info.innerHTML = files[i].name + ": " + files[i].size + " bytes"; 
      li.appendChild(info); 
     } 
     } 
    } 
    </script> 
</head> 
<body> 
    <p>This is a demo of calling <code>click()</code> on a form's file picker. 
    Note that the file input element is actually hidden here, so the 
    user doesn't have to see the path to the selected file.</p> 
     <a href="javascript:doClick()">Select some files</a> 
    <div id="fileList"> 
    <p>No files selected!</p> 
    </div> 
    <form action="#" method="post" enctype="multipart/form-data"> 
    <input name="upimg[]" type="file" id="fileElem" multiple accept="image/*" style="display:none" onchange="handleFiles(this.files)"> 
     <input type="submit" value="Click to see the result"> 
    </form> 
</body> 
</html> 

ответ

0

Ваша логика я думаю, что это неправильно использовать HTML 5, но не загружать изображения с помощью AJAX вы используете форму для этого метода.

Miltiple - это только HTML 5, и вы не можете использовать его для PHP без AJAX.

Я создал подобный плагин вы можете проверить: https://github.com/dimitardanailov/js-control-files-uploader

0

Попробуйте обернув его в цикле несколько как код вы закомментированного ....

if(isset($_FILES["upimg"]["name"])) { 
    for($i=0; $i<count($_FILES["upimg"]["name"]);$i++) { 
     echo $_FILES["upimg"]["name"][$i]; 
    } 
} 
+0

не работают, см: http://codepad.viper-7.com/B7FqLz –

+0

Не уверен, что вы делаете неправильно, что код работает для меня, однако я использую AJAX как @ d.danailov описано –

0

почему вы не используете
тег перед любым из .parent div?

для соотношения ширины вы конечно можете сделать это с помощью jquery.

myElement.width = (parentElement.width/100)*40 
Смежные вопросы