Доброго дня всем.
Ищу правильный подход.
Ситуация такова, пользователи загружают изображения, заполняя форму.
Форма, допустим состоит из поля Title, текстового поля для ввода обращения и поля загрузки изображений.
Как правильно организовать хранение фото?
Логика такая:
1. Пользователь открывает форму
2. Набирает текст
3. Выбирает изображение на раб.столе и загружает его.
Как здесь можно сделать? К чему привязать именование папки с изображениями?
Наверно это должно выглядеть так imgsRootFolder/userName/curYear/requestTitle/img_1, img_2
И тут появляется ряд проблем:
Загрузка изображений по-принципу WYSIWYG. То есть картинка появляется в форме ещё до отправки самой формы.
a) Папка /requestTitle/ Будет создана, если изображение пройдёт валидацию. Но как передать этот самый requestTitle из текстового поля в класс обработки изображения?
b) Если папка с изображениями создана, а форма в итоге не отправлена, как удалить эту папку, как не нужную?
с) Если папка создана, но пользователь изменил инфу в поле Title, как быть с папкой? Сравнивать версии и переименовывать?
Может быть вобще не следует привязываться к requestTitle, а привязаться к некому Id?
Вобщем как правильнее и логичнее сделать такое?
Реализация файловой системы
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Реализация файловой системы
Сделайте табличку для изображений
id, user_id, title, upload_date, path
А в файловой системе храните как удобно.
id, user_id, title, upload_date, path
А в файловой системе храните как удобно.
Вставлять картинку в форму до отправки надо через js, requestTitle отправится на сервер вместе с картинкой.И тут появляется ряд проблем:
Загрузка изображений по-принципу WYSIWYG. То есть картинка появляется в форме ещё до отправки самой формы.
a) Папка /requestTitle/ Будет создана, если изображение пройдёт валидацию. Но как передать этот самый requestTitle из текстового поля в класс обработки изображения?
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Реализация файловой системы
Это всё известно.someweb писал(а): ↑2020.02.13, 13:23 Сделайте табличку для изображений
id, user_id, title, upload_date, path
А в файловой системе храните как удобно.Вставлять картинку в форму до отправки надо через js, requestTitle отправится на сервер вместе с картинкой.И тут появляется ряд проблем:
Загрузка изображений по-принципу WYSIWYG. То есть картинка появляется в форме ещё до отправки самой формы.
a) Папка /requestTitle/ Будет создана, если изображение пройдёт валидацию. Но как передать этот самый requestTitle из текстового поля в класс обработки изображения?
Картинка, после выборки с компа, отображается в форме. Форма ещё не отправлена.
Чтобы картинка отобразилась, она должна быть положена в директорию на сервере.
Соответственно и вопрос о том, как правильно эту директорию создавать.
Как организовать файловую систему?
Наверно это должно выглядеть так imgsRootFolder/userName/curYear/requestTitle/img_1, img_2.
То есть имя каждой поддиректории должно строиться по принципу Юзер/Год/Имя обращения/img_1, img_2
Как передавать в модель это самое Имя обращения? Или же есть какое-то иное, более логичное решение именования с привязкой к Юзеру и году?
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Реализация файловой системы
Превью можно делать без загрузки файла на сервер https://stackoverflow.com/questions/445 ... s-uploaded
Файлы можно хранить так
$newFileName = md5($username . $filename . $time); // fba8255e8e9ce645522455f3e1561e53.jpg
Сохраняем в папку imgsRootFolder/fb/a8/fba8255e8e9ce645522455f3e1561e53.jpg
В базе сохраняем оригинальное и новое имя файла, айди записи прописываем в соответствующей таблице для связи с заявкой.
Файлы можно хранить так
$newFileName = md5($username . $filename . $time); // fba8255e8e9ce645522455f3e1561e53.jpg
Сохраняем в папку imgsRootFolder/fb/a8/fba8255e8e9ce645522455f3e1561e53.jpg
В базе сохраняем оригинальное и новое имя файла, айди записи прописываем в соответствующей таблице для связи с заявкой.
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Реализация файловой системы
Спасибо за совет. Пересмотрел концепцию.yiiliveext писал(а): ↑2020.02.13, 14:46 Превью можно делать без загрузки файла на сервер https://stackoverflow.com/questions/445 ... s-uploaded
Файлы можно хранить так
$newFileName = md5($username . $filename . $time); // fba8255e8e9ce645522455f3e1561e53.jpg
Сохраняем в папку imgsRootFolder/fb/a8/fba8255e8e9ce645522455f3e1561e53.jpg
В базе сохраняем оригинальное и новое имя файла, айди записи прописываем в соответствующей таблице для связи с заявкой.