2010-01-27 11 views
5

Necesito determinar el tipo mime de ciertos archivos que se devuelven del servicio, no conozco sus extensiones de archivo o su tipo antes, básicamente recuperamos documentos de la API como los siguientes: "http://site.com/getFile/BFD843DFLKXJDF" donde el texto al final es un archivo.¿Cómo puedo determinar el tipo de mimo de un documento utilizando solo javascript?

<input type="button" value="Click Me" onClick="alert(document.getElementById('iframeID').contentDocument.contentType);"> 

<iframe id="iframeID" src="http://site.com/getFile/BFD843DFLKXJDF" width="600" height="600" /> 

Esto funciona en Firefox, devuelve en el diálogo de alerta: "application/pdf" para archivos PDF. Sin embargo, Internet Explorer es el navegador principal al que tengo que orientarme, "contentDocument" no está definido (aparentemente utilizo solo "documento"), pero "contentType" tampoco está definido y no sé cuál sería el IE equivalente (google las búsquedas no han arrojado ningún resultado).

La ayuda es muy apreciada, gracias.

+0

Hola alguna vez has encontrado una buena manera de hacer esto? Estoy enfrentando el mismo problema. Estoy planeando usar JavaScript para obtener el tipo de mimo basado en la extensión del archivo. ¿Encontraste/escribiste alguna función que hace esta búsqueda? – Daveo

Respuesta

1

Si http://site.com es diferente a su dominio, no podrá acceder a sus datos en ningún navegador. Esto se debe a las medidas de seguridad de scripting entre sitios.

+0

site.com es el mismo dominio, pero solo tengo acceso al lado frontal de las cosas. Entonces, supongo que cruzar sitios no sería un problema. – Folken

+0

¿por qué estás usando JavaScript para obtener el tipo de contenido? ¿No debería el servidor darle ese tipo de información de una manera más limpia? –

+0

Actualmente no tengo acceso a la funcionalidad/código de back-end, así que esta es la razón por la cual estoy buscando una forma de entrada para capturar el tipo mime, si hay una manera en que el servidor expone el tipo mime-type Naturalmente, al frente me gustaría escucharlo porque ahora mismo estoy en un callejón sin salida. – Folken

0

Tal vez:

var frame = document.getElementById('iframeID'); 
var type; 

if (frame.contentDocument) { 
    type = frame.contentDocument.contentType; 
} else { 
    type = frame.contentWindow.document.contentType; 
} 
alert(type); 

triste fin del día no hay tiempo para probar ....

+0

Lamentablemente, una vez más, es la propiedad contentType: si ingresa el siguiente javascript en la barra de direcciones de esta página: "javascript: alert (document.contentType);" y luego presiona "Enter" - en IE obtendrás "undefined", en firefox obtendrás "text/html". – Folken

0

IE apoya document.mimeType, pero parece no dar un nombre real de la sintaxis foo/bar. Que es extraño. Aunque esto puede ser lo suficientemente bueno para sus propósitos.

No sé por qué no está documentado here, pero la interfaz nativa IHTMLDocument2 lo documenta here. Muy extraño.

+0

Desafortunadamente no he tenido suerte usando la propiedad mimeType. – Folken

+0

No funcionó en absoluto (error de script) o no le dio lo que quería? –

+0

No dio el tipo mime del documento real entrante. Caso en punto, llamar a document.mimeType en esta página me da "documento de Firefox" (supongo que esto significa que es un documento html - hasta ahora todo bien) , invocarlo en un JPEG me da una imagen JPG, también es bueno, invocarlo en formato pdf me da un error: "Internet Explorer no puede descargar. Error no especificado": muchos de los documentos que obtenemos están en diferentes formatos, incluidos estos. – Folken

Cuestiones relacionadas