2010-11-03 8 views
67

Funciona si el archivo html es local (en mi unidad C), pero no si el archivo html está en un servidor y el archivo de imagen es local. ¿Porqué es eso?¿Por qué no puedo hacer <img src="C:/localfile.jpg">?

¿Alguna solución alternativa?

+1

¿Puedo preguntar por qué querría hacer tal cosa? –

+1

@BorisCallens Por ejemplo, me gustaría probar el cambio de una imagen en mi sitio web de preparación, cuando tengo la nueva imagen en mi propia máquina y no quiero pasar por todo el proceso de carga a la puesta en escena. Parece que la única manera de hacerlo sería cambiar la imagen en el entorno de desarrollo en lugar de organizar de todos modos. –

+0

También es una gran manera de jugar una broma a tus conocidos menos competentes técnicamente, haciéndoles creer que has pirateado un sitio web. – 0112

Respuesta

46

Sería una vulnerabilidad de seguridad si el cliente pudiera solicitar archivos locales del sistema de archivos y luego usar JavaScript para descubrir qué hay en ellos.

La única forma de evitar esto es crear una extensión en un navegador. Las extensiones de Firefox y las extensiones de IE pueden acceder a los recursos locales. Chrome es mucho más restrictivo.

+0

todavía, el flash se las arregla para acceder a cualquier cosa que el usuario seleccione, incluso en Chrome – Javier

+0

Volvió a subir esto porque respondió el por qué y dio algunas formas de eludirlo. Lo que probablemente haga (y sé que no proporcioné muchos antecedentes) es crear un servidor web local para servir imágenes locales. De esa forma, el navegador puede mostrarlos. – PeterV

+0

Flash solo puede acceder a los recursos locales con un archivo de política en su lugar o, de lo contrario, pasa al modo local y está restringido de otras maneras. –

13

C: no es un esquema de URI reconocido. Pruebe file://c|/... en su lugar.

24

Los navegadores no pueden acceder al sistema de archivos local a menos que accedas a una página html local. Tienes que subir la imagen a alguna parte. Si está en el mismo directorio que el archivo html, puede usar <img src="localfile.jpg"/>

23

¿No debería usar "file: // C: /localfile.jpg" en lugar de "C: /localfile.jpg"?

+5

GRACIAS. 7 años como desarrollador de .Net y olvidé poner el archivo: // al frente ... –

+3

¡Aún no funciona! –

2

Observación de Newtang aparte de las reglas de seguridad, ¿cómo vas a saber que cualquiera que vea tu página tendrá las imágenes correctas en c:\localfile.jpg? No puedes. Incluso si crees que puedes, no puedes. Presupone un entorno de Windows, por un lado.

+0

A menos que sea posible. No he dado mucho contexto en la pregunta, lo sé :) Pero en este caso, podemos saberlo. – PeterV

+5

¿Qué sucede si solo planea tener 10 usuarios en una oficina que tengan entornos de Windows y las imágenes correctas en c: \ localfile.jpg? Para ese fin ... él sería completamente capaz de no solo saber que las imágenes correctas están ahí, sino también controlarlas. – Nazca

+0

Esta pregunta es válida porque su requisito es para un entorno de Windows, que atiende a un público muy limitado. Por ejemplo, me encontré con el mismo problema cuando estaba diseñando un servidor web basado en Arduino, donde el único cliente era una PC con Windows en la misma LAN que el servidor Arduino. El Arduino era demasiado lento en el servicio de imágenes para el cliente, así que necesitaba almacenar las imágenes en la máquina del cliente. – PrashanD

0

También debe cargar la imagen y luego vincularla a la imagen en el servidor.

1

veo dos posibilidades de lo que está tratando de hacer:

  1. Usted quiere que su página web, que se ejecuta en un servidor, para encontrar el archivo en el equipo que diseñó originalmente?

  2. ¿Quiere que lo busque desde la PC que está viendo en la página?

Opción 1 simplemente no tiene sentido :)

Opción 2 sería un agujero de seguridad, el navegador prohíbe una página web (servido desde la web) desde el contenido de carga en la máquina del espectador.

Kyle Hudson te dijo lo que tienes que hacer, pero es tan básico que me resulta difícil creer que esto es todo lo que quieres hacer.

-5

Um, solo piense ... hay miles de millones de computadoras con la unidad C: \, entonces, ¿cómo espera que el html en el servidor conozca su C: \ localfile.jpg local? Todo debe estar en el servidor.

Mueva su archivo de imagen al servidor. Debe cambiar el nombre de la etiqueta a < img src = "localfile.jpg" > Asegúrese de ponerlo en el mismo directorio donde está el documento. Sin embargo, le recomiendo agregar el directorio "images" y poner la imagen en el directorio de imágenes y escribir como esto: < img src = "images/localfile.jpg" > en su documento.

+4

Odio este tipo de respuesta que parece plagar SO. Estoy escribiendo un guión para automatizar una tarea en mi computadora ONE y no me preocupan los miles de millones que hay. La pregunta es válida. Um, solo piensa un poco más. – DaveWalley

0

¿qué ocurre si la imagen es algo seleccionado por el usuario? Use una entrada: etiqueta de archivo y luego, después de seleccionar la imagen, muéstrela en la página web del lado del cliente. Eso es factible para la mayoría de las cosas.En este momento estoy tratando de hacerlo funcionar para IE, pero al igual que con todos los productos de Microsoft, es un cluster fork().

3

IE 9: Si desea que el usuario eche un vistazo a la imagen antes de que la publique en el servidor: El usuario debe AGREGAR el sitio web a "lista de sitios web de confianza".

1

si utiliza el navegador Chrome de Google que puede utilizar como esto

<img src="E://bulbpro/pic_bulboff.gif" width="150px" height="200px"> 

Pero si utiliza Firefox Mozila la que tenga que añadir "archivo" ex.

<img src="file:E://bulbpro/pic_bulboff.gif" width="150px" height="200px"> 
+0

Eso no funcionó para mí en Chrome, pero funciona en IE? – octopus

2

Honestamente, la forma más fácil era agregar alojamiento de archivos al servidor.

  • Abrir IIS

  • Añadir un directorio virtual en el sitio Web predeterminado

    • camino virtual será lo que desea navegar en el navegador. Así que si usted elige "servidor/imágenes usted será capaz de navegar a él por ir a http://serverName/images
    • A continuación, agregue la ruta física de la unidad C:
  • Añadir los permisos apropiados para la carpeta de C:. conducir para "Servicio de red" y "IIS AppPool \ DefaultAppPool"

  • de actualización del sitio web predeterminado

  • y ya está ahora puede navegar a cualquier imagen en esa carpeta, vaya hasta http://yourServerName/whateverYourFolderNameIs/yourImage.jpg y utilizar esa URL en su img src

Espero que esto ayude a alguien

0

Si va a implementar un sitio web local justo para usted o para ciertos clientes, se puede evitar esto mediante la ejecución de mklink /D MyImages "C:/MyImages" en el sitio web directorio raíz como administrador en cmd. Luego, en el html, haga <img src="MyImages/whatever.jpg"> y el enlace simbólico establecido por mklink conectará el enlace src relativo con el enlace en su unidad C. Resolvió este problema para mí, por lo que puede ayudar a otros que lleguen a esta pregunta.

(Obviamente, esto no va a funcionar para sitios web públicos ya que no puede ejecutar comandos cmd en las computadoras de las personas fácilmente)

Cuestiones relacionadas