Как указать локальный файл в 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-страницы. вы можете попробовать использовать путь к файлу из командной строки на компьютере, на котором запущен браузер, чтобы подтвердить, что это ограничение браузера, а не законный отсутствующий файл.