Какова максимальная длина имени файла в S3

84

Возможно, я слепой, но я не могу найти в документации S3 максимальную длину имени файла, которую можно загрузить в S3.

охе
источник
6
Понятия не имею, почему это было закрыто как не по теме. Он идеально подходит для формата вопросов и ответов.
Джеймс МакМахон

Ответы:

109

Как следует из документации Amazon ,

Эти имена являются ключами объекта. Имя ключа - это последовательность символов Юникода, длина которой в кодировке UTF-8 составляет не более 1024 байтов.

Максимальная длина имени файла составляет 1024 символа. Если символы в имени требуют более одного байта в представлении UTF-8, количество доступных символов уменьшается.

Команда разработчиков S3 Browser
источник
5
Если ваш язык представляет символы Unicode с 16 битами, это так ((1024 bytes * 8 bits/byte) / 16 bits/character) = 512 characters. Но как узнать, что они используют?
Бен
11
@Ben Unicode! = UTF-8. UTF-8 - это способ кодирования Unicode в набор бит. Для символов в (7-битном) наборе ASCII UTF-8 использует только 1 байт / 8 бит. Для других символов это, вероятно, будет 2 байта, но иногда 3 или 4. Таким образом, для имен файлов, использующих исключительно символы ASCII, максимальная длина имени файла будет 1024 символа.
Джош Галлахер
22
Сначала я подумал: «1024 байта текста в кодировке UTF8! = 1024 символа», а затем я подумал: «Ах да, но максимум по-прежнему 1024 символа». Забавно, как иногда вы так стремитесь продемонстрировать неправоту незнакомца в Интернете (и как вы почти никогда не понимаете, что неправы, прежде чем публиковать: D)
Ромен
@Romain на первый взгляд кажется правильным. Но тогда дело не только в ЛОГИЧЕСКОМ праве. Помимо этого, ответ должен быть полезным. Если не отметить Unicode! = UTF-8, читатель может неправильно его понять, полагая, что «keystring» .length () <= 1024, без учета кодировки.
Стив
3
Это довольно просто. Если ваш ключ состоит только из американского алфавита (набор ASCII), у вас будет 1024 символа. Если я использую только немецкие умляуты, такие как öäü, у меня будет место только для 512 символов, потому что они 2-байтовые, закодированные в UTF-8.
Marc