Мой код загружает много изображений, и записывает только имя первого изображения в бд. Надо получить все имена загруженных изображений из массива и записать их в бд.
Форма:
<form class="form-add" method="POST" enctype="multipart/form-data">
<input id="postUploadFileInput" type="file" name="file[]" multiple>
<button type="submit" onclick="formAdd(event,this)">Добавить товар</button>
</form>
ajax:
function formAdd(e) {
e.preventDefault();
var form_data = new FormData();
$.each($("#postUploadFileInput")[0].files,function(key, input){
form_data.append('file[]', input);
});
$.ajax({
url: '/product-script',
type: 'post',
dataType: 'json',
cache: false,
contentType: false,
processData: false,
data: form_data,
success: function(data){
}
});
};
php:
<br>
if( empty($errors) )<br>
{<br>
// Изображения<br>
// Название <br>
$input_name = 'file';<br>
<br>
// Разрешенные расширения файлов.<br>
$allow = array();<br>
<br>
// Запрещенные расширения файлов.<br>
$deny = array(<br>
'phtml', 'php', 'php3', 'php4', 'php5', 'php6', 'php7', 'phps', 'cgi', 'pl', 'asp', <br>
'aspx', 'shtml', 'shtm', 'htaccess', 'htpasswd', 'ini', 'log', 'sh', 'js', 'html', <br>
'htm', 'css', 'sql', 'spl', 'scgi', 'fcgi', 'exe'<br>
);<br>
<br>
// Директория куда будут загружаться файлы.<br>
$path = __DIR__ . '/product-image/';<br>
<br>
$datas = array();<br>
<br>
if (!isset($_FILES[$input_name])) {<br>
$error = 'Файлы не загружены.';<br>
} else {<br>
// Преобразуем массив $_FILES в удобный вид для перебора в foreach.<br>
$files = array();<br>
$diff = count($_FILES[$input_name]) - count($_FILES[$input_name], COUNT_RECURSIVE);<br>
if ($diff == 0) {<br>
$files = array($_FILES[$input_name]);<br>
} else {<br>
foreach($_FILES[$input_name] as $k => $l) {<br>
foreach($l as $i => $v) {<br>
$files[$i][$k] = $v;<br>
}<br>
} <br>
} <br>
<br>
foreach ($files as $file) {<br>
$error = $success = '';<br>
<br>
// Проверим на ошибки загрузки.<br>
if (!empty($file['error']) || empty($file['tmp_name'])) {<br>
$error = 'Не удалось загрузить файл.';<br>
} elseif ($file['tmp_name'] == 'none' || !is_uploaded_file($file['tmp_name'])) {<br>
$error = 'Не удалось загрузить файл.';<br>
} else {<br>
// Оставляем в имени файла только буквы, цифры и некоторые символы.<br>
$pattern = "[^a-zа-яё0-9,~!@#%^-_\$\?\(\)\{\}\[\]\.]";<br>
$name = mb_eregi_replace($pattern, '-', $file['name']);<br>
$name = mb_ereg_replace('[-]+', '-', $name);<br>
$parts = pathinfo($name);<br>
<br>
if (empty($name) || empty($parts['extension'])) {<br>
$error = 'Недопустимый тип файла';<br>
} elseif (!empty($allow) && !in_array(strtolower($parts['extension']), $allow)) {<br>
$error = 'Недопустимый тип файла';<br>
} elseif (!empty($deny) && in_array(strtolower($parts['extension']), $deny)) {<br>
$error = 'Недопустимый тип файла';<br>
} else {<br>
// Перемещаем файл в директорию.<br>
if (move_uploaded_file($file['tmp_name'], $path . $name)) {<br>
// Далее можно сохранить название файла в БД и т.п.<br>
$success = 'Файл «' . $name . '» успешно загружен.';<br>
} else {<br>
$error = 'Не удалось загрузить файл.';<br>
}<br>
}<br>
}<br>
<br>
if (!empty($success)) {<br>
$datas[] = '' . $success . ''; <br>
}<br>
if (!empty($error)) {<br>
$datas[] = '' . $error . ''; <br>
}<br>
}<br>
}<br>
<br>
// ЗАПИСЬ В БД<br>
$product = R::dispense('products');<br>
$product->image = $_FILES[$input_name]['name'][0]; // СЮДА НАДО ЗАПИСАТЬ МАССИВ ИМЕН ИЗОБРАЖЕНИЙ (сейчас записано только имя первого изображения)<br>
R::store($product);<br>
<br>
$response = [<br>
"status" => true<br>
];<br>
echo json_encode($response);<br>
}<br>
if( ! empty($errors) )<br>
{<br>
$response = [<br>
"status" => false,<br>
"message" => array_shift($errors)<br>
];<br>
echo json_encode($response);<br>
}<br>