Загрузка файлов

231
20 ноября 2017, 21:13

Добрый день, Нужно сделать загрузку файлов с описанием, каждого прикреплённого файла. И общее описание всех файлов. Как это реализовать.

Нужно загружать неопрелеенное колличество файлов. Ну и к каждому нужно описание.

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>
Answer 1

Не гуру программирования, но вот что в голову пришло.

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'];
    //Далее воротим как хотим...

} 
READ ALSO
Yii1 не найден класс

Yii1 не найден класс

Есть у меня в проекте на yii1 класс ItemТак вот, недавно снес винду, переустановил заново локальный серер, и всё такое

229
Баг с буквой &ldquo;Й&rdquo;

Баг с буквой “Й”

Заметил, что в некоторых непонятных случаях php считает букву "Й" не 1 символом, а двумяИз-за этого возникают разные неприятности, например при...

275
Ошибка при построении AJAX запроса в Wordpress

Ошибка при построении AJAX запроса в Wordpress

Возникает ошибка при формировании ответа от файла-обработчика:

276