2016-05-24 11 views
1

Я пытаюсь вставить несколько изображений в базу данных для каждой транзакции, но каждое изображение имеет свои собственные типы ввода. Но когда я отправляю форму, я получаю сообщение об ошибке, что мой $file_upload = $_FILES['file_upload'.$i]; из моего post.php является «неопределенным индексом». Являются ли file-upload1, file-upload2, file-upload3 из моего HTML неправильного способа сделать это? Пожалуйста помоги. Спасибо.Как загрузить несколько файлов изображений в одной транзакции, используя php и mysqli?

Мой PHP код:

include 'dbcontroller.php'; 
if(isset($_POST['submit'])) { 
    for ($i = 1; $i <= 3; $i++) { 
     $file_upload = $_FILES['file_upload'.$i]; 

     $file=(rand(1000,100000)."-".$file_upload['name'.$i]); 
     $type=$file_upload['type'.$i]; 
     $size=$file_upload['size'.$i]; 
     $loc=$file_upload['tmp_name'.$i]; 

     $new_size=$size/1024; // file size in KB 

     // make file name in lower case 
     $new_file_name = strtolower($file); 
     // make file name in lower case 

     $final_file=str_replace(' ','-',$new_file_name); 

     if(move_uploaded_file($loc, '..admin/officers-avatars/'.$final_file)) { 
      $result = mysqli_query($conn,"INSERT INTO images VALUES ('$final_file', '$new_size', '$type')") 
      or die(mysqli_error($conn)); 
     } 
    } 
} 

Ниже мой HTML

<form action="post.php" method="post" enctype="multiple/form-data"> 
 
\t <input type="file" name="file-upload1" /><br><br> 
 
\t <input type="file" name="file-upload2" /><br><br> 
 
\t <input type="file" name="file-upload3" /><br><br> 
 

 
\t <input type="submit" name="submit" value="SAVE"/> 
 
</form>

+0

Вы сделали 'var_dump()' on '$ _FILES', чтобы узнать, что на самом деле там? – WillardSolutions

+0

Нет, не знаю. И еще не пробовал 'var_dump', но я попробую. @EatPeanutButter – Louie

+0

Сделал это. И я получил NULL. Wew @EatPeanutButter – Louie

ответ

2

У вас есть опечатка: Изменить enctype="multiple/form-data" для enctype="multipart/form-data".

Во всяком случае, я хотел бы предложить вам использовать массив в name атрибута вместо:

<form action="post.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="fileupload[]" /><br><br> 
    <input type="file" name="fileupload[]" /><br><br> 
    <input type="file" name="fileupload[]" /><br><br> 

    <input type="submit" name="submit" value="SAVE"/> 
</form> 

Тогда в PHP вы используете это:

foreach($_FILES['fileupload'] as $file) { 
    .... 
} 

Или вы можете использовать несколько:

<input type="file" name="fileupload[]" multiple /><br><br> 
+0

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

+0

спасибо. я попробую это. – Louie

+0

Кроме того, проверьте часть enctype .. вам нужно использовать 'multipart' вместо' multiple' –