2015-07-17 2 views
1

Я пытаюсь загрузить несколько файлов, создав папку в соответствии с серийным номером и сохраняя в них файлы. Мои коды, как показано ниже:Multile upload to folders

HTML код для загрузки нескольких:

<div class="form-inline clearfix"> 
      <label class="col-md-5">Select A File To Upload:</label> 
       <div class="col-md-4"> 
        <input type="file" name="myfile[]" id="Uploaded_file" multiple="multiple"/> 
       </div> 
</div><br/> 

PHP код для загрузки нескольких

if (count($_FILES["myfile"]) > 0) 
{ 
    for ($i = 0; $i < count($_FILES["myfile"]["name"]); $i++) 
    { 
     foreach ($_FILES["myfile"]["error"][$i] as $key => $error) { 
      if ($error == UPLOAD_ERR_OK) { 

       $structure = "Uploads/SystemConfiguration/$formno"; //FormNo is the serial number queried from the database 
       if (!mkdir($structure, 0777, true)) 
       { 
        die('Failed to create folders...'); 
       } 
       $tmp_name = $_FILES["myfile"]["tmp_name"][$i][$key]; 
       $name = $_FILES["myfile"]["name"][$i][$key]; 
       $target = $target .'/' .$_FILES['myfile']['name'][$i] ; 
       $filepath=$_FILES['myfile']['name'][$i] ; 
       if(move_uploaded_file($tmp_name,"$structure/$name")) 
       { 
        echo "<center>The file ". basename($_FILES['myfile']['name'][$i]). " has been uploaded.</center>"; 
       } 
       else 
       { 
        echo "No File was uploaded"; 
       } 
      } 
     } 
    } 
} 

Даже если я загрузить несколько файлов, только последний файл сохраняется в каталоге. Как я могу изменить свой код, чтобы я мог загружать несколько файлов? Цените любую помощь :)

ответ

1

Это возможно в HTML5. Пример (PHP 5.4):

<!doctype html> 
<html> 
    <head> 
     <title>Test</title> 
    </head> 
    <body> 
     <form method="post" enctype="multipart/form-data"> 
      <input type="text" name="Filename"> 
      <input type="file" name="my_file[]" multiple> 
      <input type="submit" value="Upload"> 
     </form> 
     <?php 
      if (isset($_FILES['my_file'])) { 
       $myFile = $_FILES['my_file']; 
       $fileCount = count($myFile["name"]); 
       $Filename=$_POST['Filename']; 
       $structure = "Uploads/SystemConfiguration/$Filename"; 
       if (!mkdir($structure, 0777, true)) 
       { 
       die('Failed to create folders...'); 
       } 

       for ($i = 0; $i < $fileCount; $i++) { 
       $name = $_FILES["my_file"]["name"][$i]; 
       $tmp_name=$_FILES["my_file"]["tmp_name"][$i]; 
       move_uploaded_file($tmp_name,"$structure/$name"); 
        ?> 
         <p>File #<?= $i+1 ?>:</p> 
         <p> 
          Name: <?= $myFile["name"][$i] ?><br> 
          Temporary file: <?= $myFile["tmp_name"][$i] ?><br> 
          Type: <?= $myFile["type"][$i] ?><br> 
          Size: <?= $myFile["size"][$i] ?><br> 
          Error: <?= $myFile["error"][$i] ?><br> 
         </p> 
        <?php 
       } 
      } 
     ?> 
    </body> 
</html> 

Вот как это выглядит в Chrome после выбора 2 пунктов в диалоге файла:

chrome multiple file select

А вот как это выглядит после нажатия «Загрузить файл» кнопка.

submitting multiple files to PHP

Это только эскиз полностью рабочий ответ. См. PHP Manual: Handling file uploads для получения дополнительной информации о правильной, безопасной обработке загрузки файлов в PHP.

+0

Эй! Спасибо за ответ. Я хочу знать, как загрузить несколько файлов в созданный каталог. На данный момент загружается только один файл. – SR1092

+0

просто добавьте move_uploaded_file ($ myFile ["tmp_name"] [$ i], "," $ structure/$ name "), в приведенном выше коде внутри цикла. –

+0

Эй, спасибо! Это работает отлично!: D – SR1092