Добрый день, Нужно сделать загрузку файлов с описанием, каждого прикреплённого файла. И общее описание всех файлов. Как это реализовать.
Нужно загружать неопрелеенное колличество файлов. Ну и к каждому нужно описание.
function reArrayFiles($file)
{
$file_ary = [];
$file_count = count($file['name']);
$file_key = array_keys($file);
for($i=0;$i<$file_count;$i++)
{
foreach($file_key as $val)
{
$file_ary[$i][$val] = $file[$val][$i];
}
}
return $file_ary;
}
if(!empty($_FILES['img'])){
$img = $_FILES['img'];
$img_desc = reArrayFiles($img);
$event=mb_substr(sha1(date('YmdHis')), 0,5);
$directory="img/"."$event"."/";
mkdir($directory,0777,true);
chmod($directory, 0777);
foreach($img_desc as $val)
{
$newname =
mb_substr(sha1(date('YmdHis',time()).mt_rand()),0,7).'.jpg';
move_uploaded_file($val['tmp_name'],$directory.$newname);
chmod($directory.'/'.$newname, 0777);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="formfiles.php" enctype="multipart/form-
data">
file : <input type="file" name="img[]" multiple>
<input type="submit" />
</form>
</body>
</html>
Не гуру программирования, но вот что в голову пришло.
HTML
<form method="post" action="formfiles.php" enctype="multipart/form-data">
<!-- Добавляем id к input -->
<input id="fileload_input" type="file" name="img[]" multiple />
<!-- Добавляем контейнер для описания каждого файла -->
<div id="desc"></div>
<!-- Добавляем TextArea для описания всех файлов -->
<textarea type="text" name="description"></textarea>
<input type="submit" />
</form>
JQuery
//Вешаем обработчик на каждое изменение формы загрузки файлов
$(document).on("change","#fileload_input", function () {
//Очищаем контейнер описаловок для файлов
var container = $('#desc');
container.html("");
//Получаем все файлы
var files = this.files;
var count_files = files.length;
//Добавляем поля для описания файлов
//Ключевое здесь - это name у input, с точно такими же id что и у файлов
for (var i = 0; i<count_files; i++)
{
//Сам input
var elem = '<input type="text" id="desc['+ i +']" name="desc['+ i +']" />';
//Label для него
var desc = '<label for="desc['+ i +']">Описание для '+ files[i].name +' </label>'
//Добавляем элементы в контейнер
container.append(desc);
container.append(elem);
}
});
PHP
if(!empty($_FILES['img']) && !empty($_POST['desc']) && !empty($_POST['description'])){
//Сами файлы
$img = $_FILES['img'];
//Массив описаний для каждого файла
$desc = $_POST['desc'];
//Общее описание всех файлов
$description = $_POST['description'];
//Далее воротим как хотим...
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости