2012-08-27 24 views
6

aktivieren Ich habe eine Web-Anwendung in asp.net entwickelt, gibt es eine Seite in diesem Projekt, der Benutzer sollte eine Datei im Bildformat (jpeg, jpg, bmp, ...) und wählen Ich will Vorschaubild auf der Seite, aber ich will Datei nicht zum Server posten Ich möchte es in Client behandeln Ich habe es mit Java-Skripte Funktionen über Datei-API getan, aber es funktioniert nur in IE9, aber die meisten Kunden verwenden IE8 Der Grund ist, dass IE8 Datei API nicht unterstützt gibt es eine Möglichkeit, IE8-Upgrade oder einige Patches im Code hinter zu machen Ich überprüfe, ob der Browser IE ist und nicht unterstützen Datei-API Aufruf eine Funktion, die automatisch IE8 auf IE9 aktualisiert.
Wie JavaScript JavaScript-Datei API in IE8

Ich möchte den Benutzer nicht bitten, es in der Nachricht zu tun, ich möchte es programmgesteuert tun !!
auch wenn es möglich ist, einen speziellen Patch zu installieren, der für die Datei API erforderlich ist, weil Kunden dachten, dass es ein Fehler in meiner Anwendung ist und ihr Computerwissen niedrig ist was soll ich damit machen?
Ich benutze auch Async File Upload Ajax Control Aber es post die Datei auf den Server irgendwie mit Ajax-Lösung und HTTP-Handler, aber Java-Skripte machen alles im Client-Browser !!!

folgende Skript überprüft der Browser-API oder nicht

<script> 
if (window.File && window.FileReader && window.FileList && window.Blob) 
    document.write("<b>File API supported.</b>"); 
else 
    document.write('<i>File API not supported by this browser.</i>'); 
</script> 

folgenden Skripten die Lese- und Load Image

function readfile(e1) 
{ 
    var filename = e1.target.files[0]; 
    var fr = new FileReader(); 
    fr.onload = readerHandler; 
    fr.readAsText(filename); 
} 

HTML-Code unterstützt:

<input type="file" id="getimage"> 

<fieldset><legend>Your image here</legend> 
    <div id="imgstore"></div> 
</fieldset> 

JavaScript-Code:

<script> 
function imageHandler(e2) 
{ 
    var store = document.getElementById('imgstore'); 
    store.innerHTML='<img src="' + e2.target.result +'">'; 
} 

function loadimage(e1) 
{ 
    var filename = e1.target.files[0]; 
    var fr = new FileReader(); 
    fr.onload = imageHandler; 
    fr.readAsDataURL(filename); 
} 

window.onload=function() 
{ 
    var x = document.getElementById("filebrowsed"); 
    x.addEventListener('change', readfile, false); 
    var y = document.getElementById("getimage"); 
    y.addEventListener('change', loadimage, false); 
} 
</script> 

Antwort

10

Sie können nicht installieren etwas Besonderes, um Unterstützung für Datei-API in IE8 hinzuzufügen. Was Sie tun können, ist ein Polyfill zu verwenden, um diese Funktionalität in Browsern zu implementieren, die es nicht nativ unterstützen. Werfen Sie einen Blick auf diese Liste von HTML5 Cross Browser Polyfills (Sie sollten etwas passendes für Sie finden in File API/Drag & Drop Abschnitt).

+0

vielen Dank tpeczek ich es prüfen wird out, Polyfill Funktion Flash-i sollte ausgeführt werden muss, so fragen Benutzer Flash herunterladen und installieren, und ich will nicht, Benutzer fragen, zu tun Irgendeine Sache, weil Benutzer IE9 irgendwie in der Software installieren kann, wenn Entwickler einen Fehler sehen, veröffentlichen sie einen Flecken oder ein Einsteck, der Fehler korrigiert, Sie wissen, dass ich eine DLL-Akte im Forscherverzeichnis kopieren und einige Änderungen zum Entdecker über irgendeine Art vornehmen möchte Ich denke, es gibt eine Möglichkeit, dass ich eine Datei hochladen kann und prüfen, ob der Browser die API-Funktion Download-DLL-Datei nicht unterstützt und einige Operationen wie kopieren zu system32 – saeed

+1

Mein großes Problem ist, dass IE8 File API nicht unterstützt Jede Möglichkeit, sogar eine Batch-Datei, um etwas zu tun – saeed

+0

@saeed Die einzige Möglichkeit, Datei-API im IE unterstützt zu bekommen, ist IE9 + zu haben. Sie können auch keine DLL ändern oder Software von der Webanwendung installieren - eine solche Möglichkeit wäre eine große Sicherheitsverletzung (denken Sie daran, dass Sie sich in einer Sandbox befinden). – tpeczek

2

Nach einigen Recherchen habe ich es gibt keine Möglichkeit, Datei-API in IE8 zu aktivieren, aber ich habe etwas, das es mit Ihnen teilen möchten .....
Nicht direkt, HTML 5 wird nicht von IE8 unterstützt . Es gibt Addons für Canvas, und es gibt auch Google Chrome Frame, ein Plugin, um HTML 5 zu IE älter als 9 hinzuzufügen.
Wie ich verstanden habe, ist Google Chrome Frame die perfekte Möglichkeit, HTML5 zu verwenden.
Es erhöht 10mal IE Geschwindigkeit und auch dann ist es Nutzung sehr einfach ist und ich beschreibe es für Sie alle Mitglieder ...
Google Chrome Frame

Ein Plugin für den Internet Explorer, die auf der Microsoft-Browser hinzufügen, eine vollständige HTML 5 Unterstützung und der JavaScript-Compiler von Chrome! Eine stabile Version wurde am 22. September 2010 veröffentlicht und viele Seiten haben den Code auf ihren Seiten hinzugefügt.

Dieses Plugin funktioniert mit Internet Explorer 6, 7 und weiteren Versionen. Google möchte eine Barriere überwinden, die die Weiterentwicklung des Internets verhindert: der gängigste Browser und seine mangelnde Kompatibilität mit den neuen Standards.

Wenn es erkannt wird, wird Internet Explorer unter WebKit, der Rendering-Engine von Chrome und Safari, ausgeführt, und es wird den ultraschnellen JavaScript-Compiler anstelle des IE-Interpreters verwenden.

Der Vorteil dieses Plugins ist groß für die Kompatibilität von Web-Anwendungen und wird noch besser mit WebGL in Webkit integriert werden, die uns Anwendungen in 3D auf dem Browser haben: ein ganz anderes Web! WebGL wird seit der Version 3.7 auch von Firefox unterstützt.

Seit Mai 2011 kann das Plugin ohne Administratorrechte installiert werden, also auf älteren Versionen von IE, die in einen Server eingebunden sind und nicht aktualisiert werden können.

Ein Tag im Code einer Webseite zeigt eine Meldung an, die den Benutzer auffordert, das Plugin herunterzuladen. Sobald es installiert ist, führen IE als Chrome und HTML 5.

Eigenschaften von Rahmen

Der Offline-Modus unterstützen. Die und Tags. Microsoft plant auch, sie in IE zu implementieren. Leinwand. WebGL. CSS 3. JavaScript-Compiler. Kompatibilität auf Acid 3-Niveau. Siehe das Video.

Reaktion von Microsoft

Wir erwarteten, dass Microsoft nicht wirklich diese Initiative versteht sich, dass HTML 5 zu Lasten ihrer eigenen Lösung fördert, Silverlight. Die Firma weist auf ein Sicherheitsproblem hin:

Angesichts der Sicherheitsprobleme mit Plug-ins im Allgemeinen und Google Chrome im Besonderen hat Google Chrome Frame als Plug-in den Angriffsbereich für Malware und schädliche Skripts verdoppelt.

**

Chrome Frame. Automatische Installation -> http://www.google.com/chromeframe/?quickenable=true
Google Chrome Rahmencode. ->https://developers.google.com/chrome/chrome-frame/
Chrome Frame: Entwicklerhandbuch. ->http://www.chromium.org/developers/how-tos/chrome-frame-getting-started

**

+0

Sagen Sie mir Ihre Meinung – saeed

+1

Google Chrome Frame-Unterstützung wird heruntergefahren. Von der Website: "Wir beenden Chrome Frame und planen, den Support und die Updates im Januar 2014 einzustellen." – danial

2

Dies funktioniert für mich in pre IE10, ich benutze https://github.com/eligrey/FileSaver.js für jeden anderen Browser, beachten obwohl dies funktioniert es nicht perfekt ist, weil es IE ist und auch Sie wissen, was ich meine

this helps

/** 
* saves File, pops up a built in javascript file as a download 
* @param {String} filename, eg doc.csv 
* @param {String} filecontent eg "this","is","csv" 
* @param {String} mimetype eg "text/plain" 
*/ 
function saveAs (filename, filecontent, mimetype) { 
    var w = window.open(); 
    var doc = w.document; 
    doc.open(mimetype,'replace'); 
    doc.charset = "utf-8"; 
    doc.write(filecontent); 
    doc.close(); 
    doc.execCommand("SaveAs", null, filename); 
} 
+0

groß, aber die Frage ist für ie8. Also ist die Bibliothek von ihrer besten Seite her nutzlos. –

+0

arbeitete für mich für ein Projekt in IE8, ich habe auch in anderen Projekten shimmed das Herunterladen von Dateien zu einem 'Post' RPC Endpunkt, der eine mitgelieferte Binärzeichenfolge als Download mit einem bereitgestellten Mime-Typ widerspiegelt, der wirklich gut funktioniert – aqm

+0

dann denke ich, dass du deinen Post editieren musst. Fügen Sie hinzu, dass es für ie8 funktioniert. –