HTML — как загрузить несколько файлов изображений в одной транзакции, используя php и mysqli?

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

Мой 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">
<input type="file" name="file-upload1" /><br><br>
<input type="file" name="file-upload2" /><br><br>
<input type="file" name="file-upload3" /><br><br>

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

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>
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]