Как создать ссылку на локальный файл на локально запущенной веб-странице?

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

  • C:Programssort.mw
  • C:Videoslecture.mp4

проблема в том, что я хотел бы, чтобы ссылки функционировали как ярлык для файла. Я пробовал следующее:

<a href="C:Programssort.mw">Link 1</a>
<a href="C:Videoslecture.mp4">Link 2</a>

... но первая ссылка ничего не делает, а вторая ссылка открывает файл в Chrome, а не VLC.

мои вопросы являются:

  1. есть ли способ настроить мой HTML, чтобы рассматривать ссылки как ярлыки для файлов?

  2. Если нет способа настроить HTML, есть ли другие способы аккуратно связать файлы, разбросанные по всему жесткому диску?

Мой компьютер работает под управлением Windows 7, а мой веб-браузер-Chrome.

5 ответов


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

<a href="file:///C:\Programs\sort.mw">Link 1</a>
<a href="file:///C:\Videos\lecture.mp4">Link 2</a>

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

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

почему он застрял без file:///?

первая часть URL - это протокол. Протокол состоит из нескольких букв, затем двоеточие и две косые черты. HTTP:// и FTP:// действительны протоколов; C:/ нет, и я уверен, что это даже толком не похож.

C:/ также не является допустимым веб-адресом. Браузер может предположить, что это должно быть http://c/ С указанным пустым портом, но это произойдет сбой.

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

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

почему в три раза?

потому что это часть схема URI файла. У вас есть возможность указать хост после первых двух косых черт. Если вы пропустите указание хоста, он просто предположит, что вы ссылаетесь на файл на своем собственном ПК. Другими словами: file:///C:/etc ярлык для file://localhost/C:/etc.

эти файлы по-прежнему открываются в браузере и это хорошо

Ваш браузер будет реагировать на эти файлы точно так же они ответят на один и тот же файл в любом месте интернета. Эти файлы не будет откройте в обработчике файлов по умолчанию (например, MS Word или VLC Media Player), и вы не будет можно сделать что-нибудь вроде ask File Explorer, чтобы открыть местоположение файла.

это очень хорошо для вашей безопасности.

сайты в браузере не может взаимодействовать с вашей операционной системой. Если хороший сайт может сказать лекция.mp4 открыть в VLC.exe, вредоносный сайт может сказать ему, чтобы открыть .летучая мышь!--50--> на CMD.exe. Или он может просто сказать вашему ПК, чтобы запустить несколько удалить.exe файлы, или открыть проводник в миллион раз.

это может быть неудобно для вас, но HTML и безопасность браузера на самом деле не предназначены для того, что вы делаете. Если вы хотите иметь возможность открыть лекция.mp4 in VLC.exe, подумайте о написании настольного приложения вместо этого.


Если вы используете IIS на вашем компьютере, вы можете добавить каталог, который вы пытаетесь достичь в качестве виртуального каталога. Для этого щелкните правой кнопкой мыши на своем сайте в ISS и нажмите "Добавить виртуальный каталог". Назовите виртуальную папку. Укажите виртуальную папку в папку на локальном компьютере. Вы также должны предоставить учетные данные, которые имеют права доступа к определенной папке, например. Имя хоста\имя пользователя и пароль. После этого вы можете получить доступ к файлу в виртуальной папке, как и к любому другому файлу ваш сайт.

http://sitename.com/virtual_folder_name/filename.fileextension

кстати, это также работает с Chrome, который в противном случае не принимает файл-протокол file://

надеюсь, это кому-то поможет:)


Janky в лучшем случае

<a href="file://///server/folders/x/x/filename.ext">right click </a></td>

а затем щелкните правой кнопкой мыши, выберите опцию" копировать местоположение", а затем вставьте в url.


У меня есть способ и работа так:

<'a href="FOLDER_PATH" target="_explorer.exe">Link Text<'/a>

в 2017-й:

использовать URL-адрес.createObjectURL (file ) создать локальную ссылку на файловую систему, выбранную пользователем;

Не забудьте освободить память с помощью URL-адрес.revokeObjectURL()