@maks78945

Как реализовать загрузку файлов в карточке?

Добрый день! Только начинаю пробовать реализовать данный функционал но стаю всё время в тупик, помогите разложить всё по полочкам.
Суть такова: есть карточка контакта, реализована на php, mysql ну и ajax.
Для загрузки картинок хочу использовать dropzone.
но у меня возникает ряд вопрос:
1.) захожу я в карточку с id 1 выбираю файл, файл загружается в папку "uploads", как мне избежать загрузки фала с name.jpg который уже был загружен в данную карточку?
2.) как мне выводить в последующем все файлы которые уже загружены в данную карточку?
3.) как быть если если пытаются загрузить файл с именем который уже есть в другой карточке?

Может уже есть какие-это примеры или готовые решения?
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
  1. Обычно делают так: при загрузке файла сервер проверяет существует ли такой файл. Если да — сохраняет новый но под другим именем (например name-1.jpg). Или он может каждому новому файлу давать какое-то случайное имя, (например card-1-image-1-uid1234354.jpg) И всегда возвращает ответ на клиент — ссылку на сохранённый файл, если нужно. Таким образом клиент может отправлять на сервер файлы с любыми именами. Важно только то, к какой карточке нужно прикрепить.

  2. Ну, у вас, наверное, в БД должно храниться какие файлы, к каким карточкам привязаны.

  3. Опять таки, работа сервера не должна быть привязана к названиям файлов которые отправляет клиент. Клиент может отправлять любые файлы, а как их сохранять должен решать сервер.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
При загрузке файл попадает во временную папку.
Затем вы должны проверить что там действительно картинка, и ваш сервер понимает этот формат.
Если все норм - вы делаете move_uploaded_file() в какую-то папку.
      Вот на этом месте самое интересное. Перемещайте не просто в uploads, а в /contacts/42/filename.jpg, например, где 42 - id карточки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы