¿Cuáles son las formas de hacer que un enlace html abra una carpeta?

106

Necesito permitir que los usuarios de una aplicación abran una carpeta haciendo clic en un enlace dentro de una página web. La ruta de la carpeta está en la red y se puede acceder a ella desde cualquier lugar. Probablemente estoy seguro de que no hay una manera fácil de hacer esto, pero ¿tal vez estoy equivocado?

Sebastien Lachance
fuente
4
He respondido a continuación; este es un requisito común de las aplicaciones web empresariales que se vuelve casi imposible debido a una seguridad equivocada (debería ser posible habilitar enlaces de archivos en páginas http confiables). Solo he probado extensivamente en Windows.
Andrew Duffy

Respuestas:

107

¿Quiere abrir una carpeta compartida en el Explorador de Windows? Necesita usar un file:enlace, pero hay advertencias:

  • Internet Explorer funcionará si el vínculo es una ruta UNC convertida ( file://server/share/folder/).
  • Firefox funcionará si el enlace está en su propia forma alterada usando cinco barras ( file://///server/share/folder) y el usuario ha desactivado la restricción de seguridad en los file:enlaces en una página servida a través de HTTP . Afortunadamente, IE también acepta el formulario de enlace destrozado.
  • No se puede convencer a Opera, Safari y Chrome de que abran un file:enlace en una página servida a través de HTTP.
Andrew Duffy
fuente
4
en IE solo si la ruta UNC y el sitio web que contiene el enlace están en el mismo dominio, es decir solo en la intranet.
Stefan Steiger
4
Creo que esto ya no es correcto: las versiones más nuevas de IE parecen bloquear este comportamiento al igual que Chrome / Safari / etc.
ZeekLTK
1
Acabo de probar esto en IE 11 y, de hecho, puede abrir un archivo local sin descargarlo (como en abrir una ruta de archivo ya existente). Esto todavía no existe en Chrome.
Hohohodown
4
Puede hacer que esto funcione en Chrome a través de la extensión LocalLinks Chrome . Gracias a esta respuesta de StackOverflow
Zach Johnson
@Andrew Duffy, ¿hay algún tipo de documentación que diga que Google Chrome está bloqueando este comportamiento? Me gustaría saber más sobre esto
juego de palabras
7

La URL file://[servername]/[sharename]debe abrir una ventana del explorador a la carpeta compartida en la red.

muy cafeinado
fuente
4

asegúrese de que los permisos de su carpeta estén configurados para que se permita una lista de directorios, luego simplemente apunte su ancla a esa carpeta usando chmod 701 (aunque eso podría ser arriesgado) por ejemplo

<a href="./downloads/folder_i_want_to_display/" >Go to downloads page</a>

asegúrese de no tener index.html ningún archivo de índice en ese directorio

bloquear
fuente
Esta respuesta funciona. La parte "lista de directorios permitida" es muy importante. Si no está permitido, puede habilitarlo, pero es diferente para cada aplicación de servidor.
Travis
3

Usar file: ///// simplemente no funciona si la configuración de seguridad está configurada incluso en un nivel moderado.

Si solo desea que los usuarios puedan descargar / ver archivos * ubicados en una red o compartir, puede configurar un directorio virtual en IIS. En la pestaña Propiedades, asegúrese de que esté seleccionado "Un recurso compartido ubicado en otra computadora" y que "Conectar como ..." sea una cuenta que pueda ver la ubicación de la red.

Enlace al directorio virtual desde su página web (por ejemplo, http: // youritio / yourvirtualdir / ) y esto abrirá una vista del directorio en el navegador web.

* Puede permitir permisos de escritura en el directorio virtual para permitir a los usuarios agregar archivos, pero no lo intentó y asumió que los permisos de red anularían esta configuración.

Bickie
fuente
Esto es relevante hoy en día, ya que Chrome y las versiones más recientes de IE bloquearán el acceso a los recursos locales file: // desde páginas web que no sean archivos. Además, esto se puede configurar para que se ejecute en IIS Express, aunque debe agregarse y ejecutarse manualmente.
Schmuli
1

También puede copiar la dirección del enlace y pegarla en una nueva ventana para evitar la seguridad. Esto funciona en Chrome y Firefox, pero es posible que deba agregar barras en Firefox.

Wyrmwood
fuente
1

Un poco tarde para la fiesta, pero tuve que resolver esto por mí mismo recientemente, aunque un poco diferente, aún podría ayudar a alguien con circunstancias similares a las mías.

Estoy usando xampp en una computadora portátil para ejecutar una aplicación de sitio web puramente local en Windows. (Un entorno muy específico que conozco). En este caso, uso un enlace html a un archivo php y ejecuto:

shell_exec('cd C:\path\to\file');
shell_exec('start .');

Esto abre una ventana del explorador de Windows local.

Lucas Taulealea
fuente
1
Prometedor, pero cuando ejecuto esto en Firefox, la pestaña se bloquea. (Parece estar agitando la sesión o algo así, porque puedo acceder a otros sitios, pero este sitio parece estar colgado, ¡incluso en otras pestañas!)
Stephen R
Lo acabo de probar en Firefox, funciona para mí, pero no puedo especificar la carpeta en la que abrir, solo se abre en el directorio raíz del archivo php.
Lucas Taulealea
0

Espero que algún día ayude a alguien. Estaba haciendo un pequeño POC y me encontré con esto. Un botón, onClick muestra el contenido de la carpeta. A continuación se muestra el HTML,

<input type=button onClick="parent.location='file:///C:/Users/' " value='Users'>
Nagaraja JB
fuente