2010-01-27 9 views
5

Ich muss den MIME-Typ bestimmter Dateien ermitteln, die vom Dienst zurückgegeben werden, ich weiß nicht, ihre Dateierweiterungen oder was ihr Typ vorher ist, im Grunde rufen wir Dokumente aus der API wie: "http://site.com/getFile/BFD843DFLKXJDF" wo der zufälliger Text am Ende ist eine Datei.Wie kann ich den MIME-Typ eines Dokuments nur mit Javascript ermitteln?

<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" /> 

Dies funktioniert in Firefox, gibt es im Alarmdialog: "application/pdf" für PDF-Dateien. Allerdings ist Internet Explorer der Hauptbrowser, auf den ich zielen muss, "contentDocument" ist nicht definiert (anscheinend verwende ich nur "document"), aber "contentType" ist ebenfalls undefiniert und ich weiß nicht, was das IE-Äquivalent wäre (google Suchen haben keine Ergebnisse erbracht).

Hilfe ist sehr dankbar, danke.

+0

Hi hast du jemals einen schönen Weg gefunden? Ich habe das gleiche Problem. Ich plane, JavaScript zu verwenden, um den Mime-Typ basierend auf der Dateierweiterung zu erhalten. Haben Sie eine Funktion gefunden/geschrieben, die diese Suche durchführt? – Daveo

Antwort

1

Wenn http://site.com sich von Ihrer Domain unterscheidet, können Sie in keinem Browser auf deren Daten zugreifen. Dies liegt an Cross-Site-Scripting-Sicherheitsmaßnahmen.

+0

site.com ist die gleiche Domain, aber ich habe nur Zugriff auf die Front-End-Seite der Dinge. Ich denke also, Cross-Site wäre kein Problem. – Folken

+0

Warum verwenden Sie dann JavaScript, um den Inhaltstyp abzurufen? sollte nicht der Server Ihnen diese Art von Informationen auf eine sauberere Weise geben? –

+0

Ich habe derzeit keinen Zugriff auf Back-End-Code/Funktionalität, deshalb suche ich nach einem Front-End-Weg, um den Mime-Typ zu greifen, wenn es eine Möglichkeit gibt, dass der Server den Mime-Typ freilegt natürlich zum Frontend, dann würde ich es gerne hören, denn gerade jetzt bin ich in einer Sackgasse. – Folken

0

Vielleicht:

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

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

Leider Ende des Tages keine Zeit zu testen ....

+0

Leider nicht, es ist wieder die contentType-Eigenschaft - wenn Sie das folgende Javascript in die Adressleiste für diese Seite eingeben: "javascript: alert (document.contentType);" und dann drücken Sie "Enter" - in IE erhalten Sie "undefined", in Firefox erhalten Sie "text/html". – Folken

0

IE unterstützt document.mimeType, aber es scheint einem angezeigten Namen nicht die tatsächlichen foo/bar Syntax zu geben. Was ist seltsam. Obwohl dies für Ihre Zwecke gut genug sein könnte.

Ich weiß nicht, warum es nicht dokumentiert ist here, aber die native IHTMLDocument2-Schnittstelle dokumentiert es here. Sehr eigenartig.

+0

Leider hatte ich kein Glück mit der MimeType-Eigenschaft. – Folken

+0

Es hat überhaupt nicht funktioniert (Skriptfehler) oder es gab nicht, was Sie wollten? –

+0

Es hat nicht den MIME-Typ des eigentlichen Dokuments kommen. Case in Point, Aufruf von Dokument.MimeType auf dieser Seite gibt mir "Firefox-Dokument" (ich nehme an, es bedeutet, es ist ein HTML-Dokument - so weit so gut) , ruft es auf ein JPEG gibt mir JPG-Bild, auch gut, ruft es auf eine PDF-Datei gibt mir einen Fehler: "Internet Explorer kann nicht herunterladen. Unbekannter Fehler" - viele der Dokumente erhalten wir in verschiedenen Formaten einschließlich dieser. – Folken

Verwandte Themen