Если вы загружаете на сайт файлы (документы, изображения, архивы и пр.), и подразумевается, что доступ к этим файлам будет публичный, а не ограниченный списком избранных товарищей, нужно иметь в виду, что различные многочисленные пользователи сети интернет используют разные устройства ( настольные компьютеры, ноутбуки, планшеты, смартфоны, ...) и разные операционные системы (Mac, PC, Linux, ...).

Символы, запрещенные в имени файла

И чтобы у всех ваши файлы адекватно открывались, отображались и скачивались, нужно перестраховаться и избегать использования в названиях файлов и каталогах сайта запрещенных символов.




Использование правильных названий для папок и файлов очень важно для web, особенно - для загружаемых файлов, таких как PDF-файлы, документы MS Word, электронные таблицы MS Excel и др.

Создавая и формируя любой документ, мы не имеем ограничений по используемым символам внутри него и можем писать в нем любые, даже запрещенные символы. Но для сохранения файла нужно присваивать ему имя с учетом некоторых правил и ограничений интернета.

 

Не используйте следующие запрещенные символы в названиях директорий и файлов:

# - pound (решетка) < - left angle bracket (знак "меньше") $ - dollar sign (доллар) + - plus sign (плюс)
% - percent (процент) > - right angle bracket (знак "больше") ! - exclamation point (восклицательный знак) ` - backtick (обратная кавычка)
& - ampersand (амперсенд) * - asterisk (звездочка) - single quotes (одинарные кавычки) | - pipe (вертикальная черта)
{ - left bracket (левая фигурная скобка) ? - question mark (вопросительный знак) - double quotes (двойные кавычки) = - equal sign (равно)
} - right bracket (правая фигурная скобка) / - forward slash (прямой слеш) : - colon (двоеточие)  
\ - back slash (обратный слеш) - blank spaces (пробел) @ - at sign (собачка)  

 




 

Не каждый сайт или сервер имеет механизм проверки файлов и, зачастую, даже если имя файла содержит запрещенные символы, вы все равно сможете загрузить его на сервер. Но вот скачать его, скорее всего, никто не сможет, особенно, через web-интерфейс.

Рассмотрим ситуацию, в которой пользователь загрузил на сайт PDF-файл, содержащий в названии символ "Решетка" (pound) - #. Сервер имеет операционную систему Linux. Поведение сервера при наличии таких символов в именах файлов будет неадекватным.

В этом случае апач считает что URL - это все, что находится перед знаком "Решетка", а все что после него - это якорь на HTML-странице, т.е. ссылка на конкретное место в HTML-документе. Соответственно, он не распознает его, как файл и не отдает пользователю.

Так как на большинстве сайтов используется автоматический Загрузчик файлов, который без лишних вопросов загружает то, что пользователь выбирает на своем компьютере. Поведение апача верное, но он не может отличить файл от html, для него всё является ссылкой, поэтому он так и будет обрабатывать.

Таким образом, нужно всего лишь не использовать символы запрещенные для имен и папок на сайте. Это самое простое в реализации.

 

Дополнительно, запомните следующие правила и постарайтесь им следовать:

  • Название файлов не должно начинаться и заканчиваться знаком "Пробел" (space), "Точка" (period), "Дефис" (hyphen) или "Подчеркивание" (underline);
  • Не присваивать файлам слишком длинные названия, постараться не превышать 31 символ;
  • По возможности всегда использовать только маленькие буквы, некоторые операционные системы чувствительны к регистру;
  • Избегайте использование знакаробел" и "Подчеркивание", если название файла состоит из нескольких слов. В этом случае лучше используйте знакефис".
  • Не используйте отличные от латиницы буквы для названий файлов и папок (русские, китайские, немецкие с умляут и др.). Не смотря на широкие возможности современных кодировок типа UTF-8, у некоторых пользователей могут возникнуть трудности с файлами, имеющими такие экзотические символы в названии.

Комментарии (3)

This comment was minimized by the moderator on the site

Запрещенные символы, это:
- Х,
- Y
- Й
(когда они стоят подряд в одной строке)

This comment was minimized by the moderator on the site

Yes, really. So happens.

This comment was minimized by the moderator on the site

Кабалистические символы запрещены! :))))

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

  1. Опубликовать комментарий как Гость.
0 Значки
Вложения (0 / 3)
Поделитесь своим местоположением

      Переменные средЫ Windows - TEMP и TMP
      Переменные средЫ Windows - TEMP и TMP

      Переменные среды Windows - ударение на "Ы" во втором слове (смысл фразы заложен в родительном падеже и верном ударении: переменные чего? - среды!), в англоязычных версиях виндовс - environment variable) Переменные среды Windows используются для настройки операционных систем. Не каждому пользователю нужно разбираться с этими настройками и влезать в эти переменные, но есть пара переменных, о которых нужно...




      Культ карго
      Культ карго

      На островах Тихого океана местные жители поклоняются самолетам, которые привозят разные ништяки и вкусняшки. А чтобы боги прилетали почаще, строят фальшивые аэродромы с муляжами самолетов, вышек и взлетными полосами.




      Ликбез по сетевым технологиям
      Ликбез по сетевым технологиям

      Автор неизвестен,текст распространяется по сети, к сожалению, без указания авторства... DHCP Вы проснулись после дикой пьянки. Первые ваши слова «кто я?» и «где я?». Сосед, который не запивал водку пивом, вам сообщает все ваши параметры: кто вы и где. Этот сосед выступает в роли DHCP-сервера. Учтите, что в сети могут быть так называемые «ложные DHCP-сервера», например жена – на ваш вопрос «кто я?» она выдаст неверную информацию:...




      VS Code не отображает диаграмму
      VS Code не отображает диаграмму

      Новый комп с установленной операционной системой MS Windows 10 Pro (система практически девственно чистая :). Java установлена. Graphviz установлен. Свежая установка программы Microsoft Visual Studio Code. В Visual Studio Code установлен компонент - PlantUML by Jebbs, но он не отображает диаграммы! Никакие. Совсем. Даже не пытается, никакие ошибки не отображаются.




      Как скрыть NavigationBar у первого ViewController (Swift)
      Как скрыть NavigationBar у первого ViewController (Swift)

      Иногда на первом ViewController необходимо не отображать NavigationBar, так как он он пустой (не имеет кнопок навигации). В Swift это можно сделать с помощью небольшого куска кода, вставленного в требуемый VeiwController внутрь функции viewWillAppear:




      Night game DOZOR
      Night game DOZOR

      15 марта 2008 года произошло моё знакомство с игрой "Дозор". Помогла мне в этом команда "Комсомольцы" в лице Руслана и Севы, позвав меня на очередную игру. Это была игра №17 первого сезона 2008 г. "Повелитель Безбрежной Пустыни". К игре я не был готов ни в техническом отношении (идиотский китайский светодиодный фонарик, не полностью заряженный телефон, который потом вырубился, хорошо, что был...




      Параноидальная защита контента сайта от копирования
      Параноидальная защита контента сайта от копирования

      Некоторые жадные владельцы сайтов настолько дорожат своим уникальным содержимым, размещенном в интернете, что порой удивляешься - как они вообще решились на такое - публично это все выложить в сеть?!? :))) Цифровые скряги внедряют в страницы сайта специальные JS-скрипты, блокирующие выделение текста и возможность сделать клик правой кнопкой, добавляют специальные CSS-стили, блокирующие...



Яндекс.Метрика
Сайт работает на быстром VPS/VDS хостинге от FASTVPS