Я создаю конструктор шаблонов электронной почты, который позволяет мне вводить содержимое, которое затем заполняет шаблон электронной почты в формате html. Часть формы позволяет добавлять новые разделы. В каждом разделе есть вход для загрузки, который позволяет пользователям добавлять миниатюру изображения в этот раздел. Я изо всех сил пытаюсь понять, как отправлять несколько изображений в одной форме, которые поступают из нескольких входов (вместо того, чтобы просто установить для одного входа значение «несколько»).
Вот HTML
<div class = "row">
<div id = "example1" class = "list-group col">
<div class = "list-group-item article">
<h4>Article Heading:</h4>
<input type = "text" name = "ArticleHeading[]"
placeholder = "Type your heading" />
<h4>Article Subheading:</h4>
<input type = "text" name = "ArticleHeading[]"
placeholder = "Type your subheading"/>
<h4>Thumbnail Image:</h4>
<input type = "file" name = "fileToUpload"
id = "fileToUpload">
</div>
</div>
</div>Вот PHP:
//IMAGE UPLOADING
$target_dir = "uploads/";
$target_file = $target_dir .
basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if (isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]
["tmp_name"]);
if ($check !== false) {
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// // Check file size
// if ($_FILES["fileToUpload"]["size"] > 500000) {
// echo "Sorry, your file is too large.";
// $uploadOk = 0;
// }
// Allow certain file formats
if ($imageFileType != "jpg" && $imageFileType != "png"
&& $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are
allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]
["tmp_name"], $target_file)) {
} else {
echo "Sorry, there was an error uploading your
file.";
}
}
$thumbnailPath = "uploads/".$_FILES["fileToUpload"]
["name"];
//END IMAGE UPLOADINGЯ попытался назвать входной файл name="file[]", а затем использовать массив для загрузки каждого файла, но каждый раз вылетала ошибка.... не знаю, что еще делать.
name = "file[]" - правильный подход, покажите этот код и фактические ошибки






Добавьте атрибут enctype = "multipart/form-data" в свою форму.
См. эта тема для получения дополнительной информации.
Это для загрузки одного входа. Моя проблема в том, что я загружаю несколько изображений с нескольких входов. Спасибо хоть!
Я понял, что поступаю правильно, задав имя массиву изображений. Мне нужно было создать цикл for(), который затем проходил через массив и назначал каждый путь к файлу другому массиву. Затем я присвоил каждому значению в этом массиве тег.
Вот HTML:
<input type = "file" name = "upload[]" multiple = "multiple">Вот PHP:
//$files = array_filter($_FILES['upload']['name']); //something like that to be used before processing files.
// Count # of uploaded files in array
$total = count($_FILES['upload']['name']);
echo $total."<br>";
$newArray = array();
// Loop through each file
for( $i=0 ; $i < $total ; $i++ ) {
//Get the temp file path
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];
//Make sure we have a file path
if ($tmpFilePath != ""){
//Setup our new file path
$newFilePath = "uploads/" . $_FILES['upload']['name'][$i];
//Upload the file into the temp dir
if (move_uploaded_file($tmpFilePath, $newFilePath)) {
//Handle other code here
}
}
}
Установка имени на
file[]должна работать, но имейте в виду, что$_FILES['file']тогда также будет массивом. Таким образом, для первого файла вам потребуется доступ к$_FILES['file'][0]['name']вместо$_FILES['file']['name']. В качестве альтернативы дайте каждому входу уникальное имя.