#blob #plone #archetypes
#blob #plone #архетипы
Вопрос:
Есть ли способ быстро проверить, содержит ли поле файла Archetypes полезную нагрузку или нет, без фактической загрузки содержимого файла в память?
Я удаленно синхронизирую файлы с элементами содержимого Archetypes, и я хотел бы избежать итерации синхронизации, если файл уже существует. Я потенциально перебираю сотни файлов, поэтому я хотел бы избежать ситуации, когда Plone считывает каждый файл в память, независимо от того, имеет ли он нулевые байты или какие-либо другие данные.
Plone 4.1.
Ответ №1:
В ATFiles есть метод size() для проверки размера файла. Кажется, что размер нигде не сохраняется, поэтому, возможно, добавление столбца в каталог подойдет вам.
Комментарии:
1. Вы имеете в виду, что вызов size() прочитает большой двоичный объект и вызовет его len()?
2. Я считаю, что вы можете выполнить
get_size
проверку на уровне поля — посмотрите наplone.app.blob.field
3. @MikkoOhtamaa он должен откуда-то знать размер, вызывать его длину или, если вы используете большие двоичные объекты, запрашивать файловую систему. Если size() где-то кэшируется и, следовательно, размер не проверяется каждый раз, вам следует выяснить, где хранится, если нет, просто добавьте столбец в portal_catalog, и таким образом вы также сможете запросить их.
4. Mikko может быть, вас заинтересует: dev.plone.org/ticket/12041 . Пока кажется, что он проверяет во время выполнения.