|
|
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
questionermaytonquestioner, мне как-то понадобилось в имена zip-архива складывать нестандартные символы (точки, двоеточия и звездочки). Я делал их замену на $xxxx где xxxx-код символа в Unicode. И сам символ $ также был заэкранирован. Все работает хорошо только при чтении таких архивов нужно делать обратную операцию. Преимущества моего метода в том что таих символов мало и этот реплейсмент в общем не искажает имена файлов и они остаются читабельными. Выглядит как почти полный аналог UrlEncoder Не имеет значения как это называть. Это работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 16:14 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
NixicBasil A. SidorovЕсли в списке возможных символов упоминается слэш (косая черта), то это "нативный" разделитель путей и он должен быть не в имени файла, а в иерархии каталогов файловой системы. Более того: слеш не может быть в имени файла физически :) Почти никогда... а вот это я на всякий случай, мало ли где возможно ))) С практической точки зрения надо быть еще более тщательным в вопросах взаимодейтсвия пользователя и файловой системы. Пользователи - дураки по определению и "лупят" такие имена которые я лечил в свое время через NortonUtilites, e.t.c. Особенно болеет этим линейка Windows. Вы не можете использовать в качестве имен файлов резервированные имена такие как NUL, CON и метасимволы *. Не можете использовать двоеточия (это разделитель streams где хранятся ACL и иногда ЭЦП). Надо быть осторожным с case-sensitive. NTFS позволяет сохранять разный регистр но матчинг при поиске может быть толерантным к регистру. Поведение а-ля Паскаль. Длина пути также может иметь ограничения. Но самая главная беда это не NTFS а прикладное ПО которое не всегда позволяет ввести с клавиатуры какие-то символы (из диапазона не-ASCII). Поэтому эскейпить и еще раз эскейпить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 20:45 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
maytonНо самая главная беда это не NTFS а прикладное ПО которое не всегда позволяет ввести с клавиатуры какие-то символы (из диапазона не-ASCII). Поэтому эскейпить и еще раз эскейпить."Гении дзюдо" одной системы, в процессе рефакторинга, "доработали" хранение файлов так, что всё "не US-ASCII в верхнем регистре" хранилось в виде #xxxx, где xxxx, как нетрудно догадаться, было кодом из BMP. Оно бы, вроде, и ничего, но, блин, в базе имя файла было "varchar 100" (bytes). Очередная бага была вынесена когда пользователь получил отлуп из-за "ОЧЕНЬ ДЛИННОГО ИМЕНИ НУЖНОГО ДОКУМЕНТА.doc" ... Вот до сих пор не могу понять одной простой вещи: что мешало привести имя к нижнему регистру при записи в хранилище, если уж вариант "монотонно возрастающий номер" оказался слишком сложным для реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 23:24 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovвсё "не US-ASCII в верхнем регистре"Зачеркнул лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 23:26 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
Длину поля можно было посчитать на этапе проектирования. Есть кст. атака на XML/DTD основанная на развертывании entities. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 23:57 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
maytonДлину поля можно было посчитать на этапе проектирования.Т.е. цинизм ситуации не доходит или костыль завсегда выиграет у человеческого решения? Для чего прикреплять два файла, которые отличаются только регистром, если клиенты работали исключительно под виндой? Я, конечно, понимаю, что пользователь может всячески изгалиться, чтобы, таки, прострелить себе голову, но, всё-таки - зачем различать регистр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 01:04 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
Не знаю. Это к бизнесу вопрос. Нужно ли различать аббревиатуры к примеру от других слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 07:32 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
maytonНе знаю. Это к бизнесу вопрос. Нужно ли различать аббревиатуры к примеру от других слов.Т.е. у вас в каждом первом проекте SOMENAME - константа, Somename - тип, а somename - переменная типа Somename? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 17:36 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
Нету у меня ничего такого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 17:39 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
... но для имён документов это совершенно нормально. "Это пять, это мы дадим в конце". P.S. Я, конечно, понимаю, что решение частного вопроса "что делать, если, таки, в наборе файлов есть одноимённые, но с разным регистром" требует участия аналитика, постановщика, разработчика и тестера. Экранирование, с другой стороны, можно по быстренькому зафигакать одному разработчику, но, таки, неужели человеческие решения обязаны проигрывать быстрым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 17:44 |
|
||
|
Base64 для имён файлов
|
|||
|---|---|---|---|
|
#18+
Идея была неудачная. Поэтому предыдущие советы - как лучше сделать то, что лучше не делать - лишены смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2018, 09:27 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39626263&tid=2122136]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 476ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...