Открывать файлы по ссылкам - PullRequest
2 голосов
/ 18 января 2012

Можно ли открыть файл на локальном диске через HTML? Я пробовал вещи как: <a href='filename.ext'>link</a> для файла на той же карте, что и скрипт. Это работает, но загружает только файл (я использую mdb-файл, чтобы он не открывался в веб-браузере, как рисунок).

Когда я ссылаюсь на т. Е. <a href='file://c:\file.ext'>link</a> или просто без файла: // ничего не происходит. Можно ли правильно связать файлы, чтобы открыть их, а не просто загрузить?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 18 января 2012

Это возможно, если он находится на вашем компьютере.

Что вам нужно сделать, это зарегистрировать протокол с расширением файла, который вы хотите открыть.В вашем случае .mdb будет файлом базы данных MS Access.

Если вы хотите перейти по ссылке в вашем браузере и открыть файл в MS Access, вам нужно сделать следующее:

<a href="your_protocol://c:\path\to\file.mdb">Open File</a>

Затем вам нужно зарегистрировать протокол "your_protocol" на вашем компьютере.

REGEDIT4

[HKEY_CLASSES_ROOT\your_protocol]
@="URL:your_protocol Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\your_protocol\shell]

[HKEY_CLASSES_ROOT\your_protocol\shell\open]

[HKEY_CLASSES_ROOT\your_protocol\shell\open\command]
@="\"C:\\Program Files\\Application\\program.exe\" \"%1\"" 

Заменить "your_protocol" произвольным именем по вашему выбору, отредактировать реестр и связать ваши файлыкак в примере.

0 голосов
/ 18 января 2012

Если ссылочный документ HTML находится на локальном диске, относительные URL будут ссылаться на локальные файлы, поэтому, например, <a href='filename.ext'>link</a> будет ссылаться на файл в той же папке.Однако браузеры затем получат HTTP-заголовки, в которых будет указан тип мультимедиа (например, text / html или image / gif), поэтому им потребуется применить некоторую эвристику, чтобы угадать, что с ней делать, или применить привязки в системе.или просто предложите диалоговое окно «Сохранить как» (единственное, что браузер действительно может сделать, не зная или не угадав тип носителя).

Как правило, это работает, если вы используете общеизвестные суффиксы имен файловнапример .html или .gif.

Если ссылающийся документ находится на сервере, все по-другому, но теоретически вы можете ссылаться на локальные файлы, используя схему file:, но его влияние полностью зависит от системы.Пример <a href='file://c:\file.ext'>link</a> синтаксически искажен (хотя некоторые браузеры могут его принять), поскольку обратный слеш «\» недопустим в URL.Использование <a href='file://c:/file.ext'>link</a> в принципе могло бы работать, и оно работало в первые дни Интернета, в случае, если в системе пользователя имелся файл, к которому можно получить доступ с путем c: /file.ext (возможно, сопоставленный с c: \file.ext системой).

Но браузеры, как правило, перестали поддерживать схему file: предположительно по предполагаемым соображениям безопасности.Конечно, никакая информация напрямую не отправляется на сервер при использовании файла: URL, но люди думали, что это может быть косвенной угрозой безопасности.Более того, URL file: были очень ограничены с самого начала.(Иногда они использовались в локальных сетях для связи с файлами на серверах локальной сети, которые не действуют как HTTP-серверы.)

0 голосов
/ 18 января 2012

Нет.«Открыть» или «загрузить» относится к HTTP-заголовку Content-Disposition, возвращаемому сервером.Когда вы открываете локальный файл, он не приходит с веб-сервера, поэтому вы не можете изменить заголовки / они не существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...