Navegador de prueba: Versión de Chrome: 52.0.2743.116
Es un javascript simple que es para abrir un archivo de imagen local como 'C: \ 002.jpg'
function run(){
var URL = "file:///C:\002.jpg";
window.open(URL, null);
}
run();
Aquí está mi código de muestra. https://fiddle.jshell.net/q326vLya/3/
Por favor, dame las sugerencias adecuadas.
<input type=file>
para obtener acceso a recursos localesRespuestas:
Sepa que esto es un poco antiguo, pero vea muchas preguntas como esta ...
Usamos mucho Chrome en el aula y es imprescindible para trabajar con archivos locales.
Lo que hemos estado usando es "Web Server para Chrome". Lo inicia, elige la carpeta con la que desea trabajar y va a la URL (como 127.0.0.1:port que eligió)
Es un servidor simple y no puede usar PHP, pero para un trabajo simple, podría ser su solución:
https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb
fuente
De acuerdo amigos, entiendo completamente las razones de seguridad detrás de este mensaje de error, pero a veces, necesitamos una solución ... y aquí está la mía. Utiliza ASP.Net (en lugar de JavaScript, en el que se basó esta pregunta) pero es de esperar que sea útil para alguien.
Nuestra aplicación interna tiene una página web donde los usuarios pueden crear una lista de accesos directos a archivos útiles distribuidos por toda nuestra red. Cuando hacen clic en uno de estos accesos directos, queremos abrir estos archivos ... pero, por supuesto, el error de Chrome lo impide.
Esta página web utiliza AngularJS 1.x para enumerar los distintos accesos directos.
Originalmente, mi página web intentaba crear directamente un
<a href..>
elemento apuntando a los archivos, pero esto producía elNot allowed to load local resource
error " " cuando un usuario hacía clic en uno de estos enlaces.La solución fue reemplazar esos
<a href..>
elementos con este código, para llamar a una función en mi controlador Angular ...La función en sí es muy simple ...
Y en mi proyecto ASP.Net, agregué un archivo Handler llamado
DownloadExternalFile.aspx
que contenía este código:Y eso es.
Ahora, cuando un usuario hace clic en uno de mis enlaces de acceso directo, llama a la
OpenAnExternalFile
función, que abre este archivo .ashx, pasándole la ruta + nombre de archivo del archivo que queremos abrir.Este código del controlador carga el archivo y luego devuelve su contenido en la respuesta HTTP.
Y, trabajo hecho, la página web abre el archivo externo.
¡Uf! Nuevamente, hay una razón por la que Chrome lanza esta "
Not allowed to load local resources
" excepción, así que tenga cuidado con esto ... pero estoy publicando este código solo para demostrar que esta es una forma bastante simple de evitar esta limitación.Solo un último comentario: la pregunta original quería abrir el archivo "
C:\002.jpg
". No puedes hacer esto. Su sitio web se ubicará en un servidor (con su propia unidad C:) y no tendrá acceso directo a la unidad C: de su usuario. Entonces, lo mejor que puede hacer es usar un código como el mío para acceder a archivos en algún lugar de una unidad de red.fuente
Chrome bloquea específicamente el acceso a archivos locales de esta manera por razones de seguridad.
Aquí hay una solución para habilitar la bandera en Chrome (y abrir su sistema a vulnerabilidades):
fuente
1) Abra su terminal y escriba
npm install -g http-server
2) Vaya a la carpeta raíz en la que desea que le sirvan los archivos y escriba:
http-server ./
3) Lea la salida de la terminal,
http://localhost:8080
aparecerá algo .Se permitirá obtener todo lo que esté allí. Ejemplo:
background: url('http://localhost:8080/waw.png')
;fuente
Existe una solución alternativa al utilizar Web Server para Chrome .
Estos son los pasos:
Ahora acceda fácilmente a su archivo local:
PD: es posible que deba seleccionar la opción Encabezado CORS desde la configuración avanzada en caso de que se enfrente a algún error de acceso de origen cruzado.
fuente
No podrá cargar una imagen fuera del directorio del proyecto o desde un directorio de nivel de usuario, por lo tanto, la "advertencia de no se puede acceder a los recursos locales".
Pero si tuviera que colocar el archivo en una carpeta raíz de su proyecto como en
{rootFolder}\Content\my-image.jpg
y hacer referencia a él así:fuente
Este problema surge cuando estoy usando PHP como lenguaje del lado del servidor y la solución fue generar codificación base64 de mi imagen antes de enviar el resultado al cliente
Creo que puede darle a alguien una idea para crear su propio trabajo
Gracias
fuente
Google Chrome no permite cargar recursos locales debido a la seguridad. Chrome necesita una URL http. Internet Explorer y Edge permiten cargar recursos locales, pero Safari, Chrome y Firefox no permiten cargar recursos locales.
Vaya a la ubicación del archivo e inicie Python Server desde allí.
python -m SimpleHttpServer
luego ponga esa url en función:
fuente
Si tiene php instalado, puede usar el servidor incorporado. Simplemente abra el directorio de destino con archivos y ejecute
fuente
Si pudiera hacer esto, representaría un gran problema de seguridad, ya que puede acceder a su sistema de archivos y potencialmente actuar sobre los datos disponibles allí ... Afortunadamente, no es posible hacer lo que está tratando de hacer.
Si necesita acceder a los recursos locales, puede intentar iniciar un servidor web en su máquina, y en este caso su método funcionará. Son posibles otras soluciones, como actuar en la configuración de Chrome, pero siempre prefiero la forma limpia, instalando un servidor web local, tal vez en un puerto diferente (¡no, no es tan difícil!).
Ver también:
fuente
Solo necesita reemplazar todas las rutas de red de imágenes por cadenas de bytes en una cadena HTML codificada almacenada. Para esto, requirió HtmlAgilityPack para convertir una cadena Html en un documento Html. https://www.nuget.org/packages/HtmlAgilityPack
Encuentre el código de abajo para convertir cada ruta de red src de imagen (o ruta local) en byte sting. Definitivamente mostrará todas las imágenes con ruta de red (o ruta local) en IE, Chrome y Firefox.
fuente
Chrome y otros navegadores restringen el acceso de un servidor a archivos locales por motivos de seguridad. Sin embargo, puede abrir el navegador en el modo de acceso permitido. Simplemente abra la terminal y vaya a la carpeta donde se almacena chrome.exe y escriba el siguiente comando.
Lea esto para más detalles
Sin embargo, de esta manera no funcionó para mí, así que hice una ruta diferente para cada archivo en un directorio en particular. Por lo tanto, ir a esa ruta significaba abrir ese archivo.
Llamé a esta función pasando la lista de nombre de archivo en el directorio
__dirname/public/extracted
y creó una ruta diferente para cada nombre de archivo que pude representar en el lado del servidor.fuente
Esta solución funcionó para mí en PHP. Abre el PDF en el navegador.
fuente
Encontré este problema, y aquí está mi solución para Angular, envolví la carpeta de activos de mi Angular en la función encodeURIComponent (). Funcionó. Pero aún así, me gustaría saber más sobre el riesgo de esta solución si hay alguno:
`` `const URL =
${encodeURIComponent(
/assets/office/file_2.pdf)}
window.open (URL)fuente