@Mashush

Как реализовать загрузку файлов при создании и редактировании записи?

И так, я относительно начинающий, поэтому встал такой вопрос. Имеется пользователь, который может создавать и редактировать определенные записи. Сама запись состоит из названия, описания и нескольких фотографий.

При отправке запроса на создание записи, отрабатывает middleware на основе пакета multer, который сохраняет переданные фотографии. В БД запись сохраняется с полями названия, описания, айди пользователя и массива путей к переданным фотографиям.

И вот в чем проблема - как, например, реализовать редактирование этой записи? Пользователь при редактировании может оставить те же самые фотографии и исправить что-то другое, либо же может в корне убрать старые фотографии и заменить их на новые, или же заменить только пару фотографий.

Нужно реализовать функционал, который бы:

1. Не добавлял те фотографии при редактировании, которые уже были сохранены при создании
2. Удалял те фотографии при редактировании, которые уже были сохранены, но пользователь решил их удалить

всем благодарен за любую информацию
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Kyber_Ded
При редактировании хранить массив старых путей к фотографиям, а при заливке сравнивать уже что изменилось. Если из второго, нового, нашел новый путь, то добавить, если не нашел в новом старого пути - удалить. Те, что не потерпели изменения, не трогать
Ответ написан
Комментировать
1. наверное, это зависит от того, какой редактор поста используется на фронте. в принципе, этот вопрос больше касается фронта. на нем необходима кнопка, которая загрузит фото и вставит нужный код в текст поста. Например bb-code или markdown. при сохранении поста фото не будут ни загружаться ни удаляться. загрузка происходит только по факту загрузки через соответствующую кнопку

2. Сделать регулярную сборку мусора. Проходить по текстам всех постов, собирать ссылки на файлы или картинки и удалять файлы, на которые нет ссылок
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
В БД запись сохраняется с полями названия, описания, айди пользователя и массива путей к переданным фотографиям.
Во первых массив путей к переданным фотографиям - это поле с жсоном? Красиво, волшебно, удобно, что сказать... Во вторых - 3 нормальная форма, ибо не зря ее придумывали.

Нужно реализовать функционал, который бы:
1. Не добавлял те фотографии при редактировании, которые уже были сохранены при создании
Во первых - почему? Хочу 5 одинаковых жоп, почему нельзя? Во вторых - определять что это один и тот же файл - как? По имени? То есть я загружаю файл 1.жпег, и потом из другого места тоже 1.жпег, совершенно другой файл, ичо? Чо делать? В смысле я то знаю что делать, просто даю подсказку, что так как у вас делать не надо. Про то что условный вася тоже может загрузить 1.жпег, и если они все хранятся в одной папке, вместо моей жопы там будет чужая...

2. Удалял те фотографии при редактировании, которые уже были сохранены, но пользователь решил их удалить
Ваще не вижу проблемы, ну, в смысле в текущей реализации этого треша варианты есть, но они все убогие, типа передавать аяксом путь до файла, так как файлы у вас не имеют айди в бд, туда же передать айди записи, чтобы все не перебирать, потом проверять есть ли в этой записи такой путь, потом из массива его удалить, файл стереть, массив обратно завернуть в жсон и записать на место.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы