html - para - ¿Cómo puedo crear un enlace a un archivo local en una página web ejecutada localmente?
etiqueta link html (6)
Me gustaría tener un archivo html que organice ciertos archivos dispersos en mi disco duro. Por ejemplo, tengo dos archivos a los que me gustaría vincular:
C:/Programs/sort.mw
-
C:/Videos/lecture.mp4
El problema es que me gustaría que los enlaces funcionen como acceso directo al archivo. He intentado lo siguiente:
<a href="C:/Programs/sort.mw">Link 1</a>
<a href="C:/Videos/lecture.mp4">Link 2</a>
... pero el primer enlace no hace nada y el segundo enlace abre el archivo en Chrome, no en VLC.
Mis preguntas son:
¿Hay alguna manera de ajustar mi HTML para tratar los enlaces como accesos directos a los archivos?
Si no hay una forma de ajustar el HTML, ¿hay alguna otra forma de vincular ordenadamente los archivos dispersos en el disco duro?
Mi computadora ejecuta Windows 7 y mi navegador web es Chrome.
Esto funciona en Chrome:
<a href="file://////serverIP/directory/">Link Label</a>
Janky en el mejor de los casos
<a href="file://///server/folders/x/x/filename.ext">right click </a></td>
y luego haga clic derecho, seleccione la opción "copiar ubicación", y luego pegar en la url.
Necesita usar el protocolo file:///
(sí, eso son tres barras) si desea vincular a los archivos locales.
<a href="file:///C:/Programs/sort.mw">Link 1</a>
<a href="file:///C:/Videos/lecture.mp4">Link 2</a>
Estos nunca abrirán el archivo en sus aplicaciones locales automáticamente. Eso es por razones de seguridad, y voy a llegar a eso en la última sección. Si se abre, solo se abrirá en el navegador. Si su navegador puede mostrar el archivo, lo hará. Si no puede, probablemente le preguntará si desea descargarlo.
Algunos navegadores, como las versiones modernas de Chrome, incluso se negarán a pasar del protocolo http al protocolo de archivo, así que será mejor que te asegures de abrirlo localmente usando el protocolo de archivo si quieres hacer esto.
¿Por qué se atasca sin file:///
?
La primera parte de una URL es el protocolo. Un protocolo es unas pocas letras, luego dos puntos y dos barras. HTTP://
y FTP://
son protocolos válidos; C:/
no lo es y estoy bastante seguro de que ni siquiera se parece a uno.
C:/
tampoco es una dirección web válida. El navegador podría suponer que debe ser http://c/
con un puerto en blanco especificado, pero eso va a fallar.
Es posible que su navegador no suponga que se refiere a un archivo local. Tiene pocas razones para hacer esa suposición, porque los sitios públicos generalmente no intentan vincularse con los archivos locales de las personas.
Entonces, si desea acceder a los archivos locales, dígale que use el protocolo de archivos.
¿Por qué tres barras?
Porque es parte del esquema de URI de archivo . Usted tiene la opción de especificar un host después de las dos primeras barras diagonales. Si omite especificar un host, solo asumirá que se está refiriendo a un archivo en su propia PC. En otras palabras: file:///C:/etc
es un atajo para file://localhost/C:/etc
Estos archivos aún se abrirán en su navegador y eso es bueno
Su navegador responderá a estos archivos de la misma manera que responderían al mismo archivo en cualquier lugar de Internet. Estos archivos no se abrirán en su controlador de archivos predeterminado (por ejemplo, MS Word o VLC Media Player), y no podrá hacer nada como preguntar al Explorador de Archivos para abrir la ubicación del archivo.
Esto es algo extremadamente bueno para su seguridad.
Los sitios en su navegador no pueden interactuar muy bien con su sistema operativo. Si un buen sitio podría indicarle a lecture.mp4 que abra en VLC.exe , un sitio malicioso podría indicarle que abra virus.bat en CMD.exe . O simplemente podría decirle a tu PC que ejecute algunos archivos Uninstall.exe o que abra el Explorador de archivos un millón de veces.
Esto puede no ser conveniente para usted, pero el HTML y la seguridad del navegador en realidad no fueron diseñados para lo que está haciendo. Si desea poder abrir lecture.mp4 en VLC.exe , considere escribir una aplicación de escritorio en su lugar.
Si está ejecutando IIS en su PC, puede agregar el directorio al que intenta acceder como un directorio virtual. Para hacer esto, haga clic derecho en su sitio en ISS y presione "Agregar directorio virtual". Nombre la carpeta virtual. Dirige la carpeta virtual a la ubicación de tu carpeta en tu PC local. También debe proporcionar credenciales que tengan privilegios para acceder a la carpeta específica, p. Ej. HOSTNAME / nombre de usuario y contraseña. Después de eso, puede acceder al archivo en la carpeta virtual como cualquier otro archivo en su sitio.
http://sitename.com/virtual_folder_name/filename.fileextension
Por cierto, esto también funciona con Chrome que de lo contrario no acepta el archivo de protocolo de archivo: //
Espero que esto ayude a alguien :)
Tengo una forma y trabajo así:
<''a href="FOLDER_PATH" target="_explorer.exe">Link Text<''/a>
de vuelta a 2017:
use URL.createObjectURL (file) para crear un enlace local al sistema de archivos que el usuario seleccione;
no URL.revokeObjectURL() liberar memoria usando URL.revokeObjectURL()