Я заметил кое-что странное на моем сайте: после присоединения файла к узлу (через обычное поле файла) этот файл никогда не удаляется с сервера . Я удаляю его из узла, сохраняю это изменение, но вижу, что файл все еще находится на сервере.
Это делает замену файлов очень трудной, потому что, когда пользователь пытается присоединить замену, к имени файла добавляется суффикс "_0" или "_1" (так как исходный файл все еще находится на сервере, и это делает имя дубликатом) , Это означает, что нам нужно будет найти все ссылки на файл и отредактировать каждую, чтобы она соответствовала новому имени файла / URL. Это полный беспорядок.
Я смотрю в Интернете, и, кажется, никто не имеет этой проблемы - файлы должны быть удалены с сервера, как только они будут удалены из узла.
Есть идеи, почему это может происходить в моем случае? Я не уверен, с чего начать. Конечно, на странице конфигурации «Файловая система» нет ничего такого, что могло бы быть проверено. И сами параметры поля, кажется, не имеют ничего такого, что я мог бы случайно установить. Есть еще идеи?
Ответы:
Я понял! Это доработка. Я думаю, это имеет смысл. Если у вас включены ревизии для этого типа контента, он сохраняет все ваши старые файлы на сервере (связанные со старыми ревизиями), поэтому замена файла определенно сложнее. Если вы попытаетесь удалить его и снова добавить в узел, имя / ссылка будут обновлены, как я уже упоминал в своем вопросе. Поскольку файл с таким именем хранится на сервере и существует дублирование имени, он добавляет эти суффиксы "_0", "_1" и т. Д. В будущие загруженные версии имени этого файла.
Я понимаю, почему это происходит, поскольку весь смысл пересмотра заключается в возможности вернуться к любой прошлой версии страницы.
Обходной путь заключается в том, что вы можете удалить старую ревизию на вкладке «Редакция» или «Умеренная» (если используется модерация Workbench), в которой содержится файл, который вы пытаетесь заменить. Затем загрузите его снова, и имя должно совпадать, без необходимости возвращаться и редактировать любые ссылки, указывающие на этот файл.
Надеюсь, что это имеет смысл и помогает кому-то еще!
источник
У меня был такой же вариант использования (желание заменить файлы при сохранении имени файла), и следующий код в пользовательском модуле достиг этой цели. Этот код опирается на модуль Entity API, поэтому его следует добавить в качестве зависимости в файл .info вашего модуля. Обратная связь приветствуется.
Это позволяет немедленно удалять файлы после нажатия «Удалить» и сохранения узла. Предупреждение: это также означает, что когда вы удаляете файл и сохраняете узел, вы не можете получить этот файл обратно, откатившись к более ранней ревизии.
источник
Я сделал модуль, который удаляет потерянные файлы, как упоминалось в этой теме:
https://www.drupal.org/project/fancy_file_delete
Он также может принудительно удалять файлы вручную и неуправляемые файлы.
источник
Это может быть проблема с разрешениями на сервере. Попробуйте сделать то же самое при чистой установке - если у вас возникла та же проблема, то это зависит от сервера, а не от Drupal.
Есть ли что-нибудь в логах?
источник
Мне не повезло с удалением старых ревизий или сохранением узлов без их прикрепленных файлов и возвращением. Это единственные вещи, которые всегда работают:
Я абсолютно ненавижу второй вариант, поэтому я здесь ищу другое решение.
(Я тоже мог выйти за пределы, поскольку у меня есть группа клиентов, работающих под D6.)
источник
Я столкнулся с этой проблемой и при модерации рабочей среды, и при вставке в поле файла фактически отображаются старые версии загруженных файлов, когда файлы с одинаковыми именами повторно загружаются в разные редакции документа.
Чтобы все работало гладко, добавьте vid узла как папку к пути загрузки файла. Обычно я делаю что-то вроде.
Путь к папке = assets / [узел: nid] - [узел: заголовок] / [узел: vid]
Да, это уродливые длинные папки с безумием подпапок, но вы действительно легко можете найти файлы по идентификатору узла или названию, а затем подпапка предотвращает конфликты имен, так что вы можете хранить много версий одного и того же файла с одинаковым именем. Затем вы можете удалить старые ревизии, если хотите очистить пространство.
источник