Проблема со скачиванием папки с именем больше некой длины.
Почему байт: если будут только ASCII символы, то лимит будет именно 200 символов. Если будут русские буквы, то лимит уменьшается (с учетом того, что на русские символые в UTF8 задействовано два байта).
Завел баг в трекере: https://tracker.moodle.org/browse/MDL-60398
Почти две недели прошло: никакой реакции.
Это бага или фича?
Версия: 3.3.2+ (Build 20170915)
Re: Проблема со скачиванием папки с именем больше некой длины.
Не ждите скорой реакции на официальном трекере. Проверьте наличие проблемы на 3.4, и добавьте ссылку на неё в заявке на трекере, это может сократить время, через которое к заявке кто-то подключится. Пока заявка никому не назначена и никто за ней не наблюдает, поскольку на категориях Course и Resource нет постоянных ответственных. Попробуйте добавить категорию Library, так как по сути проблема в библиотеке работы с файлами, а не в курсах или ресурсах.
Вообще, ограничение на длину полного пути к любому файлу должно быть около 250 байт, чтобы её могли нормально распаковать в Windows. Уверены, что длина полного пути к самому длинному имени файла внутри этой папки не превышает этот предел? Вы экспериментировали на пустой папке?
Re: Проблема со скачиванием папки с именем больше некой длины.
Если у папки длина имени больше 200 байт
Приведите пример такого названия.
ЗЫ: нет никакого ограничения ни в Мудл, ни в ОСи на длину названия папки/файла в байтах, есть ограничение на количество символов, независимо от кодировки.
Поле `filename` в БД Мудл - varchar(255)
255 символов в названии папки не позволяют создать архив для скачивания, так как при входе в каталог с таким названием Мудля не видит ни название, ни файлы внутри:
Название каталога, позволившее создать и скачать архив:
БиблиографияАиАссылкиАнаАэлектронныеАресурсыАНадёжностьАэлектроэнергетическихАсистемАПоказатели
АрискаАиАпоказателиАнадёжностиААприменяемыеАзаАрубежомАИзучениеАустройстваАиАисследованиеАработы
АрегулятораАциклаАсваркиАФАСЦА403АУ4АБиблиографияБиблиограф
Файл внутри есть (БиблиографияАиАссылкиАнаАэлектронныеАресурсыАНадёжностьАэлектроэнергетическихАсистемАПоказателиАрискаАиАпоказателиАнадёжностиААприменяемыеАзаАрубежомАИзучениеАустройстваАиАисследованиеАработыАрегулятораАциклаАсваркиАФАСЦА403АУ4АБиблиографияБиблиогра.doc):
В Windows с такими названиями вы однозначно работать не сможете, эксплорер не увидит ни архив, ни папки, ни файлы, даже если их распаковать сторонним файловым менеджером (в названии файла 250 символов):
Отсюда вопрос: а нафига зачем использовать такие названия?
Проверялось всё на Moodle 3.3.2+ (Build: 20171021)
Re: Проблема со скачиванием папки с именем больше некой длины.
Вот пример ASCII текста (с пробелами), который еще скачивается:
qqqqqqqqq wwwwwwwww eeeeeeeee rrrrrrrrr ttttttttttqqqqqqqqq wwwwwwwww eeeeeeeee rrrrrrrrr ttttttttttqqqqqqqqq wwwwwwwww eeeeeeeee rrrrrrrrr ttttttttttqqqqqqqqq wwwwwwwww eeeeeeeee rrrrrrrrr 012345678
Ровно 199 символов. Плюс один символ и уже не скачивается.
Пример русского текста (99 символов):
ййййййййййццццццццццууууууууууккккккккккееееееееееййййййййййццццццццццууууууууууккккккккккеееееееее
В конец еще можно добавить один ASCII символ, но не более того.
То есть это реально выглядит как лимит 199 байт и завершающий \0
В-общем, отредактирую созданную багу, еще поточнее сформулирую.
Re: Проблема со скачиванием папки с именем больше некой длины.
речь про ресурс "Папка" в курсе
Так это ж 2 большие разницы, как говорят в известном городе
При создании архива для скачивания (преварительно хранится в localcache) к его названию ещё добавляется дата и хеш файла, т. е. ещё больше символов будет в названии
А смысл в создании тикета? Как это побороть, если ограничения кодировки такие?
Re: Проблема со скачиванием папки с именем больше некой длины.
Ну да, я включил максимальный уровенть дебага и посмотрел на ошибки. Там в начале хэш и в конце дата + .zip. В сумме как раз набирается что-то около 255.
Меня просто удивило то, что в мире уже-давно-сплошного utf8 мы имеем байтовые, а не символьные, лимиты. То есть на лимит 200 русских символов я бы даже согласился бы. И даже, наверное, не узнал про это. Но если это фича, то пусть пишут в доках, если бага, то наверное стОит исправить.
Ну и мне кажется, что если уж мы заботимся о пользователе, то он не совсем не соображает, и логика должна быть такая: берем длиннющее имя ресурса, обрезаем до скольки нам нужно, прикручиваем что нам нужно и предлагаем пользователю. А пользователь, если хочет, пусть сам меняет имя при скачивании и сохранении.
На тикет вроде среагировали. Посмотрим, что дальше.
PS. А что касается вообще длинных названий - это требования госзаказчика, чтобы все курсы и темы в курсах назывались и именно как в контракте утверждено. Вы еще не видели наши названия тем и курсов: у меня выпадающий список категорий (например, в свойствах курса) занимает два в ширину два экрана 1920 точек.
Re: Проблема со скачиванием папки с именем больше некой длины.
Общее ограничение на длину имени файла в *nix 255 байт (именно байт, а не символов) при этом в кодировке UTF-8 русские символы занимают по 2 байта, т.е. для русских названий файлов в UTF-8 будет ограничение в 127 символов на имя файла.
Поэтому ваши 99+хеш+дата дают искомые 127 символов.
чтобы все курсы и темы в курсах назывались и именно как в контракте утверждено. Вы еще не видели наши названия тем и курсов: у меня выпадающий список категорий (например, в свойствах курса) занимает два в ширину два экрана 1920 точек.
Тут вы можете писать сколько угодно, пока не заполните всю ячейку в таблице БД ,а вот с ресурсом папка Мудл работает как с файлом/каталогом в ОСи - архивирует, копирует во временный каталог и т. д. Поэтому тут и срабатывают эти ограничения на длину имени каталога/файла. Даже если в Мудл позволить работать с ОЧЕНЬ длинными именами, будут проблемы у пользователей, скачавших такой архив (см. сообщение выше)
берем длиннющее имя ресурса, обрезаем до скольки нам нужно
В каком месте (в Мудл) делать обрезку? Мы же храним файлы и пути к ним в базе данных, подсчитывая хеш и пути, и файла. Если не там обрежем (или не то ), что будет? Error: Файл не найден
В случае ресурса каталог я вижу решение в виде размещения пояснения перед ссылкой на каталог. В пояснении пишите, что душе угодно, имя папки (и файлов в ней) укорачивайте.
Re: Проблема со скачиванием папки с именем больше некой длины.
Сейчас для формирования имени zip-файла просто берется имя ресурса. Судя по комментам под тикетом, мудловцы будут думать о том, чтобы перед формированием имени zip-файла сначала тримить имя ресурса до нужного количества байт.
Посмотрим, что дальше порешают.
Последний абзац: явный костыль временный workaround. Думается мне, либо лимит на длину имени ресурса должен быть документирован, либо функция, формирующая имя zip-файла должна сама разруливать длинное нечто, которое ей приходит.
Ну а пока скажу своим, чтобы сокращали название ресурса типа "папка".
Re: Проблема со скачиванием папки с именем больше некой длины.
Посмотрим, что дальше порешают.
Согласен, лишним не будет. Хотя всем авторам курсов в своем ВУЗе настоятельно рекомендую нигде не использовать такие длиннющие названия файлов/папок, и кириллицу,кстати, тоже
Последний абзац: явный костыль временный workaround.
Ну а пока скажу своим, чтобы сокращали название ресурса типа "папка".
Как временное решение пойдет. Кроме того (пришла мысля опосля), не нужно использовать для этого пояснение, достаточно в «Описание» для ресурса ввести полное название.