2014-11-25 4 views
0

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

В настоящее время код, который у меня есть, прекрасен, когда пользователю нужно ввести только одно изображение; Однако, я хочу сделать что-то вроде следующего с формой, так что пользователь может загрузить более одного изображения:

<form class="form-horizontal" role="form" action="insertimage.php?id=<?php echo $_GET['id']; ?>" enctype="multipart/form-data" method="post"> 
    <div class="col-md-6"> 
     <div class="form-group"> 
      <label class="col-lg-4 control-label">Select Image 1</label> 
       <div class="col-lg-6"> 
        <input type="file" name="file" id="fileToUpload"> 
       </div> 
     </div> 
    </div> 

    <div class="col-md-6"> 
     <div class="form-group"> 
      <label class="col-lg-4 control-label">Select Image 2</label> 
       <div class="col-lg-6"> 
        <input type="file" name="file1" id="fileToUpload"> 
       </div> 
     </div> 
    </div> 

    <div class="col-md-6"> 
     <div class="form-group"> 
      <label class="col-lg-4 control-label">Select Image 3</label> 
       <div class="col-lg-6"> 
        <input type="file" name="file2" id="fileToUpload"> 
       </div> 
     </div> 
    </div> 

    <div class="col-md-6"> 
     <div class="form-group"> 
      <label class="col-md-3 control-label"></label> 
       <div class="col-md-8"> 
        <input class="btn btn-primary" value="Save Changes" type="submit" name="submit"> 
       </div> 
     </div> 
    </div> 
</form> 

код PHP на заднем конец для загрузки одного изображения является insertimage.php:

<?php 
$file_exts = array("jpg", "bmp", "jpeg", "gif", "png"); 
$upload_exts = end(explode(".", $_FILES["file"]["name"])); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/png") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 2000000) 
&& in_array($upload_exts, $file_exts)) 
    { 
     if ($_FILES["file"]["error"] > 0) 
      { 
       echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
      } 
     else 
      { 
       echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
       echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
       echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
       echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 
       // Enter your path to upload file here 
       if (file_exists("uploads/" .$_FILES["file"]["name"])) 
        { 
         echo "<div class='error'>"."(".$_FILES["file"]["name"].")"." already exists. "."</div>"; 
        } 
       else 
        { 
         move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/" . $_FILES["file"]["name"]); 
         echo "<div class='sucess'>"."Stored in: " . "uploads/" . $_FILES["file"]["name"]."</div>"; 
    `    } 
      } 
    } 
else 
    { 
     echo "<div class='error'>Invalid file</div>"; 
    } 
?> 

Может ли кто-нибудь рассказать мне, как я могу поддерживать загрузку 3 изображений с помощью вышеуказанного кода?

ответ

0

Вы можете использовать массив файлов для нескольких изображений одновременно с несколькими атрибута в HTML-коде, как:

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

Это даст вам множество файлов, которые вы можете отлаживать с помощью

print_r($_FILES); 

И вы также должны изменить код, который сохраняет данные, так как есть ошибка, что у него может быть только один файл за один раз. Попробуйте выполнить цикл для моей отладки с помощью

$_FILES 
+0

я хочу, чтобы загрузить изображения отдельно, вид избегая использовать несколько ключевых слов – user3789102

+0

если вы хотите избежать множественного ключевого слова, тогда вам нужно добавить тег файла столько раз, сколько хотите, и вы должны передать такое же имя файла, чтобы оно создало массив, и оно решит вашу проблему. – Affan

+0

. Для максимум 5 файлов вы будете слишком валидируйте ввод на уровне представления, чтобы принять только 5 файлов. –

2

При этом вы можете выбрать несколько изображений с использованием Ctrl

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

На использования на стороне сервера петли

for ($1=0;i<count($dataFile);$i++){ 
    //your upload code ; 
    $_FILES["file"]["name"][$i];//go for each and every i position for all 
} 
+0

Я хочу, чтобы пользователь мог загрузить только 5 изображений, так что это также будет работать с этим кодом? – user3789102

+0

да, этот код запускается для общего количества выбранных изображений, и если исправлено 5 изображений, вы должны изменить счет до 5 на стороне php-кода – Affan

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