Добрый день. Интересуют как это делается, алгоритм. Вопрос в следующем, как сохранить комментарий и файл к нему? Например в системе wss docs: на странице я могу загружать файлы( при выборе файлов они загружаются на сервер), потом заполнить текстовые поля и нажав на кнопку "Сохранить", будет создана "карточка документа" с заполненными полями и загруженными фалами. Допустим, есть модальное окно с полем комментария, загрузчиком и кнопкой "Сохранить". Если я загружу файлы и закрою браузер или страницу, то загруженные файлы будут существовать в папке куда они были загружены. как от них избавиться? Придумал только так: 1) выбираю фалы на загрузку, (загрузка файлов произойдет после нажатия на кнопку "Сохранить") 2)пишу комментарий 3)нажимаю кнопку "Сохранить" 4) срабатывает скрипт, в БД создается запись с комментарием и пути к файлу, далее загрузка файла и перемещение его в нужный каталог. Но хотелось бы, чтобы файлы загружались когда я их выбрал.. потому что файл может быть не того типа, большого размера или ошибка в загрузке файла(загрузчик выдает эти ошибки). Тогда придется сохранять файлы в папку, и перемещать их в нужный каталог при нажатии на кнопку "Сохранить", но тогда если я закрою страницу не нажав на кнопку "Сохранить" то файл будет существовать в папки пока я сам туда не зайду и не удалю его.. Кто и как это делает, и как вообще реализованы комментарии с загрузкой файлов к ним в 1 окне
По умолчанию файлы грузятся во временную папку, она очищается при перезагрузки или как её настроили https://php.net/manual/ru/features.file-upload.php Чтобы файлы сразу грузились при их выборе, можно использовать уже готовые библиотеки которые используют ajax или Adobe Flash например https://github.com/blueimp/jQuery-File-Upload
Спасибо за ответ, видимо я неправильно задал вопрос. Загрузчик у меня через ajax самописный. Вот именно, нужны два действия это загрузка файла и сохранения комментария, но как их грамотно сделать? Я знаю что файлы грузятся во временную папку и они существуют до завершения скрипта. Поэтому эти файлы нужно копировать в свою папку например 'upload'. Но тогда если я НЕ нажму кнопку "сохранить" то комментарий НЕ будет создан соответственно и загруженный файл не переместится в нужный каталог с 'upload' в, например 'comment_file/1/'. То есть файл будет просто жить в паке 'upload', пока я его руками не удалю.. Поэтому как реализовано такое на файло-обменниках к примеру? Не хочу чтобы папка 'upload' превратилась в корзину.Или так везде? или есть хитроумное решение данной задачи? Если до сих пор не понятно, не знаю как еще объяснить. Нужен просто смысл как такое делается и реализовывается, код не нужен, нужно направление или описать словами кто как делает. как делаю это я: например файл main.php, страница на которой можно писать комментарии. Это все у меня есть и работает 1)Я нажимаю кнопку «Написать комментарий» 2)открывается модальное окно где есть текстовое поле, форма загрузчика и кнопка «сохранить» 3)я загружаю файлы(ajax передача данных Form_date), загрузчик вызывает file_upload.php 4) file_upload.php проверяет все файлы на тип размер перемещает с временной папки в каталог ‘upload/’ и отдает ответ файлу main.php о том какие фалы загрузились. В функции ответа загрузчика(на странице main.php) заношу в массив(js) названия файлов которые скопировались и находятся в папке ‘upload/’ 5) далее я пишу комментарий, нажимаю кнопку «сохранить». вступает в работу другой ajax: add_comment.php. Входные данные у него массив названия файлов(js) и сам комментарий. Его действия, он создает новую строку в БД, в которой содержится текст комментария и ID комментария. Далее в каталоге ‘filr_comment/’ создается пака с номером ID комментария например ‘filr_comment/1/’ и переносит все файлы с папки “upload” в папку ‘filr_comment/1/’ название которых были в массиве. Для чего это? чтобы при отображения комментария выводить все файлы из папки цифра которая равна ID комментария .. 6) main.php получает ответ от add_comment.php о том что все успешно создано комментарий добавлен и добавляем новый комментарий и ссылки на файл к остальным комментариям. И все это без перезагрузки станицы. Так вот а что если просто подзагружали файлы, а потом закрыли браузер? Эти фалы просто будут там хранится? как этого избежать? И моя цель сохранить данные только если была нажата кнопка сохранить, если нет то комментарий и загруженные файлы на сервере не находились.. Как это можно реализовать?
PHP грузит файлы во временную папку, вот когда есть у тебя есть комментарий и все данные что нужно (файлы и т.д.), тогда и переноси их в другую папку и пиши в базу их имена и комментарий. Временная папка почти как корзина и это нормально, что там будет всякое барахло.
Загрузка файлов во временную папку это один скрипт, и другой на подтверждение. Получается в первом скрипте нужно вытянуть файл из временной папки, в левую чтобы он не удалился после выполнения первого скрипта. А вторым скриптом подтверждаем(добавочные действия комментарии и т.п.). Получается что там могут образоваться тонны мусора если не было подтверждено, и придется ежемесячно чистить. Неужели нет решения такой проблемы? был бы доступ к wss docs, глянул бы как там это реализовано. Видимо сильно заморачиваюсь с этим...