Как я могу создать ссылку на локальный файл на локальной веб-странице?
Я хотел бы иметь HTML-файл, который организует определенные файлы, разбросанные по всему моему жесткому диску. Например, у меня есть два файла, на которые я бы ссылался:
C:\Programs\sort.mw
C:\Videos\lecture.mp4
Проблема в том, что я хотел бы, чтобы ссылки функционировали как ярлык для файла. Я пробовал следующее:
<a href="C:\Programs\sort.mw">Link 1</a>
<a href="C:\Videos\lecture.mp4">Link 2</a>
... но первая ссылка ничего не делает, а вторая ссылка открывает файл в Chrome, а не в VLC.
Мои вопросы:
Есть ли способ настроить мой HTML так, чтобы ссылки были ссылками на файлы?
Если нет способа настроить 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/
с указанием пустого порта, но это не удастся.
Ваш браузер может не предполагать, что он ссылается на локальный файл. У него нет особых оснований для такого предположения, потому что публичные сайты обычно не пытаются ссылаться на локальные файлы людей.
Поэтому, если вы хотите получить доступ к локальным файлам: скажите ему использовать протокол файла.
Почему три слеша?
Потому что это часть схемы File URI. У вас есть возможность указать хост после первых двух слэшей. Если вы пропустите указание хоста, он просто будет предполагать, что вы ссылаетесь на файл на вашем собственном ПК. Это означает file:///C:/etc
это ярлык для file://localhost/C:/etc
,
Эти файлы будут по-прежнему открываться в вашем браузере, и это хорошо
Ваш браузер будет реагировать на эти файлы так же, как они реагируют на один и тот же файл в любом месте в Интернете. Эти файлы не будут открываться в вашем обработчике файлов по умолчанию (например, MS Word или VLC Media Player), и вы не сможете ничего сделать, например, попросить проводника файлов открыть местоположение файла.
Это очень хорошая вещь для вашей безопасности.
Сайты в вашем браузере не могут очень хорошо взаимодействовать с вашей операционной системой. Если хороший сайт может сказать вашей машине, что нужно открыть файл lecture.mp4 в VLC.exe, вредоносный сайт может сказать ему, что он должен открыть virus.bat в CMD.exe. Или он может просто сказать вашей машине запустить несколько файлов Uninstall.exe или открыть File Explorer миллион раз.
Это может быть неудобно для вас, но HTML и безопасность браузера не были действительно разработаны для того, что вы делаете. Если вы хотите открыть файл lecture.mp4 в VLC.exe, попробуйте написать приложение для настольного компьютера.
Если вы используете IIS на своем ПК, вы можете добавить каталог, к которому вы пытаетесь обратиться, как виртуальный каталог. Для этого щелкните правой кнопкой мыши свой сайт в МКС и нажмите "Добавить виртуальный каталог". Назовите виртуальную папку. Направьте виртуальную папку в папку на локальном ПК. Вы также должны предоставить учетные данные, которые имеют права доступа к определенной папке, например. HOSTNAME\ имя пользователя и пароль. После этого вы можете получить доступ к файлу в виртуальной папке, как и любой другой файл на вашем сайте.
http://sitename.com/virtual_folder_name/filename.fileextension
Кстати, это также работает с Chrome, который в противном случае не принимает файл протокола файла: //
Надеюсь, это поможет кому-то:)
Джанки в лучшем случае
<a href="file://///server/folders/x/x/filename.ext">right click </a></td>
и затем щелкните правой кнопкой мыши, выберите опцию "копировать местоположение", а затем вставьте в URL.
Вернуться к 2017 году:
используйте URL.createObjectURL(файл), чтобы создать локальную ссылку на файловую систему, выбранную пользователем;
не забудьте освободить память с помощью URL.revokeObjectURL()
У меня есть способ и работа, как это:
<'a href="FOLDER_PATH" target="_explorer.exe">Link Text<'/a>