2010-01-27 25 views
6

Tengo un pequeño sistema de php que he creado para mí. Este sistema contiene algunos documentos de archivo .doc y .docx. Quiero poder abrirlos directamente desde el navegador y no descargarlos.Abrir un archivo directo en el disco duro de firefox (archivo: ///)

Creé un enlace: <a href="file:///c:/mysite/myfile.docx">myfile</a> Pero FireFox no abre el enlace. Mientras que href="http://localhost/myfile.docx" funciona bien, me ofrece descargar el archivo.

¿Alguna idea de cómo puedo hacerlo? ¿Tal vez cambiar algo en las opciones de firfox/configuración de seguridad? Y si estás en ello, ¿hay alguna posibilidad de hacerlo en IE8?

Gracias.

+0

¿Es esta una cuestión de programación? ?? –

+0

Me parece que eligió la tecnología absolutamente incorrecta para hacer lo que quiere. Pruebe algo un poco más orientado al desarrollo de escritorio. – NotMe

+0

Estoy aquí por la misma pregunta, porque hasta hace poco tiempo _su_podía hacer lo que se solicitaba aquí, la solución era seguir las instrucciones de esta página: http: //kb.mozillazine.org/Links_to_local_pages_don't_work#Disabling_the_Security_Check en resumen, deberá crear un archivo user.js con un par de cambios de configuración. Estas políticas, supongo, fueron consideradas lo suficientemente peligrosas como para que no puedas configurarlas usando about: config. Bueno, eso fue lo único que parecía hace un par de meses, en la última semana probé y ahora obtengo el mismo comportamiento de archivo local que Chrome ... – Quaternion

Respuesta

5

Aunque sigo pensando que es una cuestión de programación, que ha sido resuelta aquí: https://superuser.com/questions/103026/open-a-direct-file-on-the-hard-drive-from-firefox-file

Tanto Firefox e IE8 apoyan la File URI scheme.

Éstos son algunos ejemplos válidos para sistemas Windows, en referencia a la misma archivo c: \ WINDOWS \ clock.avi

file: // localhost/c | /WINDOWS/clock.avi
file: /// C | /WINDOWS/clock.avi
file: // localhost/c: /WINDOWS/clock.avi
file: /// C: /WINDOWS/clock.avi

Mientras que el último es el más obvio y legible por humanos, el primero es el más completo y correcto.

Al parecer (de la misma url):

navegadores Mozilla se niegan a seguir las direcciones URL de archivos en una página que se ha exagerado con el protocolo HTTP.

pero:

navegadores Mozilla se puede configurar para anular esta restricción de seguridad que se detallan en Mozillazine de "Links to Local Pages Don't Work".

1

¿Qué sintaxis usó? La sintaxis correcta para p. c:/path/to/file.ext habría sido file:///c:/path/to/file.ext. Editar: ya no es relevante ya que OP ha editado su pregunta para incluir la sintaxis.

Tenga en cuenta que esto no funciona en absoluto si el archivo está almacenado en la máquina servidor que a su vez es físicamente diferente que la máquina cliente (donde se ejecuta el navegador web).

+0

Actualicé mi pregunta para mostrar que utilicé esta sintaxis: 'archivo: /// c:/ruta/a/archivo.ext'. – aviv

+0

Funciona bien aquí. Tu problema está en otro lado. O bien el archivo no está allí donde crees que está, o Firefox realmente está bloqueando con esto. Si puedes asegurarte de que el último es el caso, considera mudarte a superuser.com ya que esto ya no tiene nada que ver con la programación. – BalusC

2

Desafortunadamente, el acceso a los archivos locales en Firefox no se puede realizar debido a restricciones de seguridad. Por lo que sé (he preguntado aquí repetidas veces) ni siquiera es posible permitir sitios seleccionados a través de una configuración o similar.

Hay una solución temporal (potencialmente insegura y para ser manejada con cuidado), puede registrar un protocolo personalizado como se describe en this question.

0

Las restricciones de seguridad son un gran problema cuando se intenta acceder a un archivo fuera de su proyecto. Lo que recomendaría (si está utilizando IIS 7+) es crear un directorio virtual para la carpeta que contiene sus documentos en su disco C. Luego puede acceder a sus archivos desde la unidad C utilizando el nombre VP y el host/localhost se incluirá en su url en lugar de "file:///".

Sin embargo, si está utilizando IIS Express, tendrá que agregar manualmente el directorio virtual actualizando el archivo "applicationhost.config". Eche un vistazo a este enlace para obtener más detalles sobre cómo configurarlo.

http://bhagirath-j-patel.blogspot.com/

Espero que esto ayude.

0

Mi código de trabajo para abrir archivos cargados localmente a través de Firefox (51.0) y el Internet Explorer real (11).

$pfad = trim(strip_tags(stripslashes(urldecode($_REQUEST['pfad'])))); 
$datei = trim(strip_tags(stripslashes(urldecode($_REQUEST['file'])))); 
exec ('start c:\\WINDOWS\\system32\\explorer.exe /select /seperate /n, /e, '.str_replace('/','\\',$pfad).utf8_decode($datei)); 

guardan como open.php

"pfad" es un camino DEBAJO del Webroot local (en mi carpeta de cliente caso) mientras que "archivo" es - por supuesto - el archivo que quiero abrir .

Me llaman de esta manera: ... href = "? Open.php pfad = <my_path> & file = <the_file>"

donde ambos parámetros se urlencoded

Cuestiones relacionadas