img - en html, el atributo alt se emplea para
¿Puedo usar imágenes sin extensión en<img>? (4)
Posible duplicado:
¿Es seguro servir una imagen en la web sin una extensión?
Me gustaría usar algo como <img src="advertisements/12" style="border: 1px solid">
en una página. FireFox no lo mostrará, lo que me hace pensar que tengo que tener una extensión de archivo para el archivo. ¿Estoy aquí (para los otros navegadores también) o a FF le gustan los tipos mime?
EDITAR
He intentado todo tipo de cosas y todavía no funciona. Ahora pongo una extensión en el archivo correctamente (.swf para Flash, por ejemplo). He cambiado el directorio, etc. Cuando llamo a file_exists()
, el archivo está allí, todos contentos, pero no puedo hacer que se renderice en la página. Podría ser un .PNG en una etiqueta img
o un objeto Flash. Ninguno de los dos funciona ¿Qué estoy haciendo mal :-( Además, si cambio el nombre de un archivo no cargado al archivo que está buscando el script, funciona bien, pero los archivos cargados no ...
¿Qué está devolviendo el servidor? La extensión de archivo no se utiliza para nada, realmente. El navegador está buscando el encabezado Content-type
, que debería ser algo así como image/jpeg
o cualquier tipo de imagen que esté publicando.
Esto se usa con bastante frecuencia en sitios que sirven dinámicamente imágenes, a menudo desde una base de datos. He visto muchas URL de imagen como image.aspx?id=37
que, aunque técnicamente tiene una "extensión", en realidad no significa que sea una imagen. Está todo en los valores del encabezado HTTP.
Me encontré con problemas de visualización de imágenes similares después de cambiar el nombre de las imágenes cargadas desde formularios web. Como podía tener una mezcla de archivos gif, jpg, jpeg o png, fui a buscar las propiedades del archivo.
Lo que terminé haciendo fue verificar el tipo MIME (que generalmente está dentro de la matriz $ _FILES mientras se procesan los archivos cargados) y agregar una extensión asociada al nombre del archivo.
if($_FILES[$fieldname][''type''][$key]==''image/gif'') {
$ext=''.gif'';
}
if($_FILES[$fieldname][''type''][$key]==''image/jpeg'') {
$ext=''.jpg'';
}
if($_FILES[$fieldname][''type''][$key]==''image/pjpeg'') {
$ext=''.jpg'';
}
if($_FILES[$fieldname][''type''][$key]==''image/png'') {
$ext=''.png'';
}
Lista de tipos comunes de imágenes mime.
- Que solucionó mi problema ya que mi navegador intentaba descargar mis imágenes como archivos binarios sin la extensión de nombre de archivo.
Servidor - Debian, Apache 2.2, PHP 5.3
Cliente Web - Kubuntu 11.10, Firefox
Proporcionar un tipo MIME puede ayudar, aunque en teoría el servidor debería proporcionar el correcto. Si se trata de un script PHP especializado (o similar) que sirve la imagen, debe asegurarse de configurar el encabezado HTTP Content-Type en el tipo MIME apropiado.
Si desea evitar el uso de la etiqueta <img>
, puede usar <div>
junto con los fondos CSS, pero eso no ayudará si el navegador no reconoce los advertisements/12
como cualquier tipo de imagen conocido.
Sí, deberías poder hacerlo.
Los navegadores inicialmente no miran el nombre de archivo, sino que miran el tipo MIME que figura en el encabezado Content-type en la respuesta del servidor HTTP. Si el tipo de contenido es image / jpeg, o png o gif o lo que sea, las cosas están bien y la imagen será feliz de renderizar.
Si no hay un tipo MIME válido, algunos navegadores intentarán adivinar cuál es el tipo. Observarán la extensión del objeto solicitado, o verán los primeros pocos bytes. Si eso falla, entonces obtienes un redex.
Eso solía causar algunos problemas en los primeros días de Firefox / Firebird, porque era estricto con los tipos de mime y con frecuencia se rehusaba a representar algo sin un tipo de MIME válido. IE hizo una conjetura, y tantos servidores web descuidados servirían páginas que se procesarían bien en IE, pero no en otras. En estos días, sin embargo, las cosas están mucho mejor.
Entonces, mientras su servidor web proporcione el tipo MIME correcto cuando se solicite el objeto img, estará listo. Si tiene problemas, verifique qué está haciendo su servidor web cuando se solicite "publicidades / 12".