Адрес файла, чем открыть

Обновлено: 21.11.2024

В этой статье рассматриваются унифицированные указатели ресурсов (URL), объясняются, что они собой представляют и как устроены.

Предварительные требования: Сначала вы должны знать, как работает Интернет, что такое веб-сервер и что такое веб-ссылки.
Цель: Вы узнаете, что такое URL и как он работает в Интернете.

Обзор

URL означает Унифицированный указатель ресурсов. URL-адрес — это не что иное, как адрес данного уникального ресурса в Интернете. Теоретически каждый действительный URL-адрес указывает на уникальный ресурс. Такими ресурсами могут быть HTML-страница, документ CSS, изображение и т. д. На практике существуют некоторые исключения, наиболее распространенным из которых является URL-адрес, указывающий на ресурс, которого больше не существует или который был перемещен. Поскольку ресурс, представленный URL-адресом, и сам URL-адрес обрабатываются веб-сервером, владелец веб-сервера должен тщательно управлять этим ресурсом и связанным с ним URL-адресом.

Основы: структура URL

Вот несколько примеров URL:

Любой из этих URL-адресов можно ввести в адресную строку браузера, чтобы указать ему загрузить соответствующую страницу (ресурс).

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

Примечание. Вы можете думать об URL как об обычном почтовом адресе: схема представляет почтовую службу, которую вы хотите использовать, доменное имя – город или город, а порт похож на почтовый индекс; путь представляет здание, куда должна быть доставлена ​​ваша почта; параметры представляют собой дополнительную информацию, такую ​​как номер квартиры в здании; и, наконец, якорь представляет фактическое лицо, которому вы адресовали свою почту.

Примечание. В отношении URL-адресов есть несколько дополнительных частей и дополнительных правил, но они не относятся к обычным пользователям или веб-разработчикам. Не беспокойтесь об этом, вам не нужно знать их, чтобы создавать и использовать полнофункциональные URL-адреса.

Схема

Полномочия

Примечание. Разделителем между схемой и полномочиями является :// . Двоеточие отделяет схему от следующей части URL-адреса, а // указывает, что следующая часть URL-адреса является авторитетной.

Одним из примеров URL-адреса, не использующего полномочия, является почтовый клиент ( mailto:foobar ). Он содержит схему, но не использует компонент полномочий. Поэтому за двоеточием не следуют две косые черты, а только разделитель между схемой и почтовым адресом.

Путь к ресурсу

/path/to/myfile.html — это путь к ресурсу на веб-сервере. На заре Интернета такой путь представлял собой физическое местоположение файла на веб-сервере. В настоящее время это в основном абстракция, обрабатываемая веб-серверами без какой-либо физической реальности.

Параметры

?key1=value1&key2=value2 — это дополнительные параметры, предоставляемые веб-серверу. Эти параметры представляют собой список пар ключ/значение, разделенных символом &. Веб-сервер может использовать эти параметры для выполнения дополнительных действий перед возвратом ресурса. Каждый веб-сервер имеет свои собственные правила в отношении параметров, и единственный надежный способ узнать, обрабатывает ли конкретный веб-сервер параметры, — это обратиться к владельцу веб-сервера.

Якорь

Как использовать URL

Любой URL-адрес можно ввести прямо в адресной строке браузера, чтобы получить доступ к ресурсу за ним. Но это только верхушка айсберга!

В языке HTML, который будет обсуждаться позже, широко используются URL-адреса:

Я загружаю html-файл, размещенный на OS X, встроенном в сервер Apache, внутри этого файла я ссылаюсь на другой html-файл в том же каталоге следующим образом:

Это работает. Однако (по причинам, слишком длинным, чтобы вдаваться в них) я экспериментирую с использованием схемы file: вместо этого, однако я не могу заставить что-либо работать. Вот как я переписываю приведенную выше строку, используя файл:

(192.168.1.57 — мой текущий IP-адрес)

Изменение на следующее также не работает:

Но файл не найден, как его указать по схеме файл:?

5 ответов 5

Файл: Схема URL относится к файлу на клиентском компьютере. В файле нет имени хоста: схема; вы просто указываете путь к файлу. Итак, файл на вашем локальном компьютере будет иметь вид file:///~User/2ndFile.html. Обратите внимание на три косые черты; часть URL-адреса с именем хоста пуста, поэтому косая черта в начале пути сразу же следует за двойной косой чертой в начале URL-адреса. Вам также потребуется расширить путь пользователя; ~ не раскрывается в файле: URL. Таким образом, вам понадобится файл:///home/User/2ndFile.html (в большинстве Unix), файл:///Users/User/2ndFile.html (в Mac OS X) или файл:///C:/ Users/User/2ndFile.html (в Windows).

Чтобы использовать относительный путь, вы просто указываете относительный путь без какого-либо файла: схемы или // . Таким образом, если у вас есть файл index.html и вы хотите сослаться на other_file.html в том же каталоге, вы просто напрямую ссылаетесь на other_file.html без какой-либо схемы.

@Brian, тогда нет никакого способа загрузить локальный файл, такой как file:///home/User/2ndFile.html? Я хотел бы знать, есть ли альтернатива?

Протокол "файл" не является сетевым протоколом. Поэтому file://192.168.1.57/~User/2ndFile.html просто не имеет особого смысла.

Я подозреваю, что первый файл действительно загружается с помощью сервера apache вообще, но просто при открытии файла? href="2ndFile.html" просто работает, потому что использует "относительный URL". Это заставляет браузер использовать тот же протокол и путь, откуда он получил первый (текущий) файл.

Первый файл загружается клиентским приложением, причина, по которой я использую file://, заключается в том, что я экспериментирую с некоторыми средствами безопасности и смотрю, возможно ли, чтобы первый файл использовал file://.

протокол URL "file://" можно использовать только для поиска файлов в файловой системе локального компьютера. поскольку этот HTML-код интерпретируется браузером, «локальный компьютер» — это компьютер, на котором запущен браузер.

Если вы получаете сообщение об ошибке «Файл не найден», я подозреваю, что это связано с тем, что файл не найден. однако это также может быть ограничением безопасности браузера. некоторые браузеры не позволяют ссылаться на файл файловой системы с html-страницы, не относящейся к файловой системе. вы можете попробовать использовать путь к файлу из командной строки на компьютере, на котором запущен браузер, чтобы убедиться, что это ограничение браузера, а не допустимый отсутствующий файл.

У меня была похожая проблема раньше, и в моем случае файл был на другом компьютере, поэтому я сопоставил сетевой диск z с папкой, где находится мой файл, затем я создал контекст в tomcat, чтобы в моем веб-проекте я мог получить доступ к HTML файл через контекст

Вы проверили, работает ли предложенное вами решение? Если нет, я рекомендую вам не публиковать ответ, так как это может ввести в заблуждение других.

Для apache найдите SymLink, или вы можете решить через ОС с символическими ссылками или в Linux настроить ссылку на библиотеку/и т. д.

Мой ответ — один из способов конкретно для Windows 10.

Поэтому мой метод включает подключение сетевого диска к U:/ (например, я использую G:/ для Google Диска)

откройте cmd и введите имя хоста (пример результата: LAPTOP-G666P000 , вместо этого вы можете использовать свой IP-адрес, но использование статического имени хоста для идентификации себя имеет больше смысла, если ваша сеть остановится)

Нажмите клавишу Windows_key + E > щелкните правой кнопкой мыши "Этот компьютер" > нажмите N (это подключение сетевого диска, а НЕ добавление сетевого расположения)

Если вы щелкаете правой кнопкой мыши по ярлыку на рабочем столе, вам нужно нажать N, а затем ввести

Заполните U: или G: или Z: или как хотите. Пример адреса: \\LAPTOP-G666P000\c$\Users\username\

связанный: вы также можете использовать этот метод для FTP и настроить несколько дисков для разных относительных путей в одной и той же сети.

Вот как открывать файлы или URL-адреса из командной строки на множестве различных платформ (Windows, MacOS, Linux/Unix и Cygwin).

Вам нужна команда start; при запуске командной строки (cmd.exe) или пакетного файла используйте:

Это встроенная функция cmd, поэтому другие программы не могут вызывать ее как "старт", но другие программы могут вызывать ее следующим образом:

Обратите внимание, что если это локальное имя файла и он является исполняемым, start выполнит эту программу, а не откроет ее средство просмотра. Я не нашел команду Windows, которая бы легко открывала файлы, но никогда их не выполняла, к сожалению.Это делает startexplorer) потенциальной проблемой безопасности, в зависимости от того, как он используется, но я не нашел безопасных встроенных средств (кроме самостоятельной реализации команды ).

Многие интернет-источники рекомендуют вместо этого использовать explorer, но есть веские причины этого не делать. Если вы вызовете explorer напрямую, он будет игнорировать выбранный пользователем интернет-браузер и вместо него всегда будет использовать Internet Explorer. Пользователи, по-видимому, сделали свой выбор не просто так, поэтому вы должны уважать его. (Действительно, Internet Explorer имеет ужасную историю уязвимостей, поэтому принудительное его использование кажется плохой идеей.) Один незначительный положительный момент при использовании explorer заключается в том, что если исполняемый файл поступает из Интернет, то вам будет предоставлен диалог о том, следует ли выполнять файл. Но в реальной жизни это не очень помогает, потому что пользователи обычно игнорируют такие диалоги. Пользователи обычно не понимают и не заботятся о том, что говорят эти диалоги, и они видят так много таких диалогов, что их приучили отвечать на них «хорошо». Таким образом, эти диалоги по безопасности в основном бессмысленны.

Строго говоря, перенаправление на другие программы для открытия файлов работает только из cmd, когда включены «расширения команд», но в Windows XP они включены по умолчанию. Как обычно, запустите «help start», чтобы узнать больше о его параметрах. Связанные команды Windows assoc и ftype полезны для установки типа файла (для данного расширения файла) и команды открытия (для данного типа файла).

Вам нужна команда open, то есть:

(Вы можете использовать «-a», чтобы принудительно запустить другое приложение.)

Вам нужна команда xdg-open, то есть:

Он не всегда устанавливается, поэтому убедитесь, что установлен пакет xdg-utils (название пакета xdg-utils по крайней мере в Fedora, Debian и Ubuntu; в некоторых других дистрибутивах он может иметь другое имя). ).

К сожалению, xdg-open не входит в стандартную комплектацию Solaris. Во многих случаях лучшим решением является загрузка и установка xdg-utils, которая, как сообщается, отлично работает в Solaris. Но если необходимо, можно напрямую вызвать /usr/dt/bin/sdtwebclient в Solaris.

Если вы наверняка знаете, что пользователь использует определенный пользовательский интерфейс, вы можете вызвать эту программу (например, gnome-open) напрямую. Но такая уверенность встречается редко. Например, вы можете написать программу GNOME, но пользователь может использовать KDE для ее вызова; в этом случае gnome-open не подходит для использования. В конце концов, если пользователь использует KDE, то следует использовать именно настройки KDE. В общем, используйте xdg-open; вы сохраните свое здравомыслие и уважаете предпочтения вашего пользователя.

Простым подходом является команда cygstart, то есть:

Обратите внимание, что если это локальное имя файла и он является исполняемым, открытие файла запустит эту программу. Это та же проблема, что и в Windows, по тем же причинам (Cygwin работает поверх Windows и, таким образом, наследует многие дефекты Windows, включая этот).

Не не используйте explorer $(cygpath "path" -w), потому что, хотя это может быть быстрее, часто будет выбрано неправильное приложение (в частности, не использовать предпочтительный браузер пользователя).

Обратите внимание, что start не работает напрямую с командной строкой Cygwin mintty, а explorer работает. (Если вы используете Cygwin, немедленно установите mintty; это замечательно.) Вместо этого вы можете использовать cmd /c start., но не делайте этого; на Cygwin вместо этого вы хотите использовать cygstart. Когда вы запускаете mintty, вы можете нажать левую кнопку управления или нажать правую кнопку и выбрать «открыть».

Я надеюсь, что когда-нибудь распространяемая версия Cygwin будет поддерживать xdg-open, но по состоянию на 01.07.2010 это не так. Я знаю, что есть патч для xdg-open, чтобы он вызывал cygstart, если ничего не помогает. Cygwin включает немного похожий пакет с именем python-xdg, но по состоянию на 18 марта 2012 г. пакет python-xdg не включает xdg-open, так что это не помогает.

Остерегайтесь распространенных ошибок.

Во-первых, существует основная проблема безопасности с простыми в использовании инструментами в Windows. Обратите внимание, что некоторые из перечисленных выше команд Windows будут выполнять этот файл вместо запуска доверенного средства просмотра файла, если это локальный исполняемый файл. Это справедливо для start Windows и cygstart Cygwin, в частности. (Это также может относиться к xdg-open на Cygwin, если таковой имеется, поскольку он должен зависеть от cygstart). Я еще не нашел простого способа обойти это в Windows (включая Cygwin, который, поскольку он работает в Windows, наследует недостатки Windows). Эта неспособность легко открывать файлы без их выполнения является примером базовой уязвимости системы безопасности в Windows. Это особенно вопиющий недостаток в Windows, потому что это так легко сделать безопасно на всем остальном.Я хотел бы услышать о чем-то лучше; пожалуйста, напишите мне, если вы знаете лучшее решение! Но не задерживайте дыхание; У меня был этот запрос в течение многих лет, и никто мне ни на что не указал.

Во-вторых, убедитесь, что проблемные имена файлов обрабатываются правильно, включая имена файлов с пробелами (включая пробел, табуляцию, новую строку и возврат). В частности, если вы вызываете его из оболочки Bourne (такой как bash), заключите ссылку на переменную в двойные кавычки (как вы должны делать с любым значением, которое может содержать пробелы). Вкратце, сделайте это так: xdg-open "$filename"

В-третьих, убедитесь, что ваш призыв не будет неправильно истолкован. Все эти программы имеют разные (несовместимые) форматы опций; вам нужно убедиться, что имя пути не будет неверно истолковано как опция. Это раздражает в Windows, потому что «/» является ведущим символом для опций и возможного начала абсолютного имени файла (в Unix/Linux/MacOS есть более рациональные подходы; они используют «-», что тривиально с префиксом «./»). Кроме того, часто неясно, является ли аргумент именем файла или URL-адресом.

Как отмечалось выше, если вы конвертируете путь в файл: URL-адрес, убедитесь, что вы конвертируете все символы «%» в «%25», иначе они будут неправильно истолкованы.

Наконец, остерегайтесь произвольного открытия файла; открытие /dev/zero (в Unix/Linux) или COM1: (в Windows) может вызвать проблемы. Во многих случаях это не имеет большого значения (если пользователь может просто закрыть зависший процесс), но в некоторых случаях это может вызвать более серьезные проблемы. Лучше не запускать их с привилегиями root/admin, потому что злоумышленник может создать больше проблем, если сможет просмотреть произвольное имя файла.

И вот, теперь у вас есть простой способ открывать файлы, каталоги и URL-адреса.

Если вы не используете Windows или можете доверять файлам, которые вы открываете и/или выполняете, вот простой сценарий оболочки, чтобы выяснить, как вызвать браузер текущего пользователя. Помните: не делайте этого в Windows, если вы не можете доверять файлу. В некоторых системах есть программа под названием "open", которая совершенно отличается, поэтому мы попробуем эту команду только в том случае, если другие не сработают:

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

Чтобы создать ссылку на существующий локальный файл, выполните следующие действия:

Выделите текст (или изображение), которое вы хотите превратить в ссылку.

Нажмите значок "Создать гиперссылку" (рисунок) на панели инструментов.

Создать значок гиперссылки

Запускается мастер ссылок (см. Мастер ссылок).

Выберите Ссылка на файл .

Выберите «Существующий локальный файл» и нажмите «Далее».

Отображается стандартная страница регистрации контента на сервере контента.

Введите соответствующую информацию о содержимом (метаданные), чтобы зарегистрировать элемент на сервере содержимого. Большая часть информации будет предоставлена ​​автоматически. Если имя поля отмечено красным, это поле является обязательным (то есть элемент не может быть возвращен, если поле пусто). Используйте кнопку «Обзор» рядом с полем «Основной файл», чтобы перейти к файлу на вашем компьютере и выбрать его. Также не забудьте указать заголовок.

Когда закончите, нажмите «Далее».

Выберите целевой раздел для ссылки. Вы можете выбрать один из следующих вариантов:

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

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

Ссылка на URL-адрес элемента контента. Если вы выберете этот параметр, файл будет отображаться точно так же, как он хранится на сервере контента, а не в рамках веб-сайта. Это полезно для ссылок на исходные документы, такие как файлы PDF.

Нажмите "Далее", чтобы продолжить.

В зависимости от конфигурации сайта вам может быть предложено выбрать формат URL ссылки:

URL-адрес на основе пути: ссылка будет содержать путь к целевому местоположению. У вас есть два варианта для этого типа ссылки:

Абсолютный путь: создает полный путь; например, Menus/switched_region_CDF (где " " заменяется путем к корню веб-сайта).

Относительный путь: вместо полного пути создается относительный путь; например ../Menus/switched_region_CDF .

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

URL-адрес на основе идентификатора: ссылка будет содержать закодированный идентификатор целевого местоположения, а не имя на основе пути. У вас есть три варианта для этого типа ссылки:

Формат клиентского сценария: использует клиентский JavaScript для создания ссылки на целевое местоположение; например, javascript:link('switched_region_CDF'); .

Формат сценария на стороне сервера: использует сценарий Idoc на стороне сервера для создания ссылки на целевое местоположение; например, .

Формат токена URL: использует перенаправление на сервере для создания ссылки на целевое местоположение; например, ssLINK/switched_region_CDF .

Откроется диалоговое окно "Параметры цели ссылки".

Если вы хотите, чтобы ссылка открывалась в новом окне веб-браузера при нажатии, установите флажок Открыть цель ссылки в новом окне, а затем выберите цель в меню ( _blank ). Вы также можете напрямую ввести имя цели в текстовое поле, если хотите, но если это недопустимая цель, ссылка будет ошибочной.

Читайте также: