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



Я хотел бы иметь 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.

2007   5  

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, поэтому вам лучше убедиться, что вы открываете это локально, используя протокол file, если вы хотите сделать это вообще.

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

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

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

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

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

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

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

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

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

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

сайты в браузере не может взаимодействовать с вашей операционной системой. Если бы хороший сайт мог сказать lecture. mp4 to open in VLC.exe, вредоносный сайт может сказать ему, чтобы открыть .летучая мышь in CMD.exe. Или он может просто сказать вашему компьютеру, чтобы запустить несколько удалить.exe файлы, или открыть файловый проводник миллион раз.

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

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

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

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

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

Дженки в лучшем случае

<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()

Comments

    Ничего не найдено.