Как указать локальный файл в html с помощью файла: схема?
Я загружаю html файл, размещенный на OS X, построенном на сервере Apache, внутри этого файла я связываюсь с другим html файлом в том же каталоге, что и в следующем каталоге:
<a href="2ndFile.html"><button type="submit">Local file</button>
Это работает. Однако (по причинам, слишком длинным для перехода) я экспериментирую с использованием схемы file: вместо этого, однако я не могу заставить что-то работать. Вот как я переписываю вышеприведенную строку, используя файл:
<a href="file://192.168.1.57/~User/2ndFile.html"><button type="submit">Local file</button>
(192.168.1.57 - мой текущий IP-адрес)
Невозможно также изменить его на следующее:
<a href="file://Name-Of-MacBookPro/~User/2ndFile.html"><button type="submit">Local file</button>
Но файл не может быть найден, как его следует указывать с помощью файла: schem?
Ответы
Ответ 1
Схема URL file:
относится к файлу на клиентской машине. В схеме file:
нет имени хоста; вы просто указываете путь к файлу. Таким образом, файл на вашем локальном компьютере будет file:///~User/2ndFile.html
. Обратите внимание на три слэша; часть имени хоста URL-адреса пуста, поэтому косая черта в начале пути сразу следует за двойной косой чертой в начале URL-адреса. Вам также потребуется расширить пользовательский путь; ~
не расширяется в URL file:
. Поэтому вам понадобится file:///home/User/2ndFile.html
(в большинстве Unix), file:///Users/User/2ndFile.html
(в Mac OS X) или file:///C:/Users/User/2ndFile.html
(в Windows).
Многие браузеры по соображениям безопасности не позволяют связывать файлы, загруженные с сервера, в локальный файл. Таким образом, вы не сможете сделать это на странице, загруженной через HTTP; вы можете ссылаться только на file:
URL-адреса с других локальных страниц.
Ответ 2
Протокол "файл" не является сетевым протоколом. Поэтому файл://192.168.1.57/~User/2ndFile.html просто не имеет большого смысла.
Вопрос в том, как вы загружаете первый файл. Это действительно сделано с использованием веб-сервера? На самом деле это не похоже. Если да, то почему бы не использовать тот же протокол, скорее всего, http? Вы не можете рассчитывать просто переключить протокол и использовать два разных протокола одинаково...
Я подозреваю, что первый файл действительно загружен с использованием сервера apache вообще, но просто, открыв файл? href= "2ndFile.html" просто работает, потому что он использует "относительный URL". Это заставляет браузер использовать тот же протокол и путь, в котором он получил первый (текущий) файл.
Ответ 3
"файл://" протокол url может использоваться только для поиска файлов в файловой системе локального компьютера. поскольку этот html-код интерпретируется браузером, "локальная машина" - это машина, на которой запущен браузер.
если вы получаете ошибки, не найденные, я подозреваю, что это потому, что файл не найден. однако это также может быть ограничение безопасности браузера. некоторые браузеры не позволят вам ссылаться на файл файловой системы с не файловой системы html-страницы. вы можете попробовать использовать путь к файлу из командной строки на компьютере, на котором запущен браузер, чтобы подтвердить, что это ограничение браузера, а не законный отсутствующий файл.