<!DOCTYPE html>
<html lang="en">
<head>
<title>Add img</title>
</head>
<body>
<form method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Загрузить файл!"> </form>
<?php
// если была произведена отправка формы
if(isset($_FILES['file'])) {
// проверяем, можно ли загружать изображение
$check = can_upload($_FILES['file']); if($check === true){
// загружаем изображение на сервер
make_upload($_FILES['file']); echo "<strong>Файл успешно загружен!</strong>";
}
else {
// выводим сообщение об ошибке
echo "<strong>$check</strong>";
}
}
function can_upload($file){
// если имя пустое, значит файл не выбран
if($file['name'] == '') return 'Вы не выбрали файл.';
/* если размер файла 0, значит его не пропустили настройки сервера из-за того, что он слишком большой */
if($file['size'] == 0) return 'Файл слишком большой.';
// разбиваем имя файла по точке и получаем массив
$getMime = explode('.', $file['name']);
// нас интересует последний элемент массива - расширение
$mime = strtolower(end($getMime));
// объявим массив допустимых расширений
$types = array('jpg', 'png', 'gif', 'bmp', 'jpeg');
// если расширение не входит в список допустимых - return
if(!in_array($mime, $types)) return 'Недопустимый тип файла.';
return true;
}
function make_upload($file){
// формируем уникальное имя картинки: случайное число и name
$name = $file['name']; copy($file['tmp_name'], dirname(__FILE__).'/' . $name);
echo $name;
}
?>
</body>
</html>
$count = 5; // количество полей для загрузки файлов
$i = 0;
$path = './dir/'; // путь до папки куда сохранять, ./ считать от расположениея скрипта
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
?>
<form action="?" enctype="multipart/form-data" method="post">
<?php while (++$i <= $count) : ?>
<div><input type="file" name="file[]"/></div>
<?php endwhile; ?>
<div><input type="submit" name="submit" value="submit"/></div>
</form>
<?php
if (isset($_POST['submit']) && count($_FILES)) {
for ($i = 0; $i <= $count; $i++) {
$newnames = [];
if (!empty($_FILES['file']['name'][$i])) {
if ($info = getimagesize($_FILES['file']['tmp_name'][$i])) {
$image = imagecreatefromstring(file_get_contents($_FILES['file']['tmp_name'][$i]));
$name = explode('.', $_FILES['file']['name'][$i]);
// обработка и сохранение
$newname = $path . time() . $name[0] . '.png'; // это имя для базы, даже путь полный, только имя можно получить например через basename();
$newnames[] = $newname; // basename($name);
imagepng($image, $newname, 9 , PNG_ALL_FILTERS);
} else {
echo '<h2>Какой то левый файл ' . $_FILES['file']['name'][$i] . '</h2>';
}
} else {
continue;
}
echo '<pre>' . print_r($newnames, true) . '</pre>';
}
} else {
echo '<h2>Ни чего не выбрано</h2>';
}
<input multiple type="file" name="files[]">
function incoming_files() {
$files = $_FILES;
$files2 = [];
foreach ($files as $input => $infoArr) {
$filesByInput = [];
foreach ($infoArr as $key => $valueArr) {
if (is_array($valueArr)) { // file input "multiple"
foreach($valueArr as $i=>$value) {
$filesByInput[$i][$key] = $value;
}
}
else { // -> string, normal file input
$filesByInput[] = $infoArr;
break;
}
}
$files2 = array_merge($files2,$filesByInput);
}
$files3 = [];
foreach($files2 as $file) { // let's filter empty & errors
if (!$file['error']) $files3[] = $file;
}
return $files3;
}