2012-08-27 16 views
6

Mam opracowaną aplikację internetową w asp.net, istnieje strona w tym projekcie, który użytkownik powinien wybrać plik w formacie obrazu (jpeg, jpg, bmp, ...) i Chcę wyświetlić podgląd obrazu na stronie, ale nie chcę wysyłać pliku na serwer Chcę go obsłużyć w kliencie, zrobiłem to za pomocą skryptów Java za pośrednictwem interfejsu API plików, ale działa tylko w IE9, ale większość klientów używa IE8 Powodem jest to, że IE8 nie obsługuje pliku API, czy jest jakiś sposób na uaktualnienie IE8 lub kilka poprawek w kodzie? Mam na myśli to, że sprawdzam, czy przeglądarka jest IE, a nie obsługuje API pliku wywołującego funkcję, która automatycznie aktualizuje IE8 do IE9.
Jak włączyć API pliku JavaScript w IE8

Nie chcę prosić użytkownika o zrobienie tego w wiadomości Chcę programowo!
nawet jeśli jest możliwe zainstalowanie specjalnej łaty, która jest wymagana dla pliku API , ponieważ klienci uważali, że jest to błąd w mojej aplikacji, a ich komputerowa wiedza jest niska co mam z tym zrobić?
Używam również funkcji przesyłania plików asynchronicznych Ajax Control Ale przesyłaj plik na serwer w dowolny sposób, korzystając z rozwiązania ajax i obsługi HTTP, ale skrypty java robią to wszystko w przeglądarce klienta !!!

Poniższy skrypt sprawdza przeglądarka obsługuje API lub nie

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

następujące skrypty zrobić odczytu i załadować obrazu

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

HTML kod:

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

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

kod JavaScript:

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

Odpowiedz

10

Nie można instalować instalowania niczego specjalnego, aby dodać obsługę interfejsu API plików w IE8. Możesz użyć funkcji polyfill polyfill, aby zaimplementować tę funkcjonalność w przeglądarkach, które nie obsługują go natywnie. Spójrz na listę HTML5 Cross Browser Polyfills (powinieneś znaleźć coś odpowiedniego dla ciebie w API pliku/przeciągnij i upuść sekcja).

+0

dzięki dużo tpeczek będę to sprawdzić, funkcja PolyFill potrzebuje do uruchomienia lampy błyskowej, więc należy poprosić użytkownika, aby pobrać i zainstalować lampy błyskowej i nie chcę, aby zapytać użytkownika zrobić jakakolwiek rzecz, ponieważ użytkownik może zainstalować IE9 w dowolny sposób w oprogramowaniu, gdy programiści zobaczą błąd, który wypuszczają łatkę lub wtyczkę, która poprawia błąd, który wiesz, że chcę skopiować plik DLL w katalogu explorera i wprowadzić pewne zmiany w eksploratorze za pośrednictwem dowolnego rodzaju Skrypty Myślę, że istnieje sposób, że mogę załadować plik i sprawdzić, czy przeglądarka nie obsługuje pliku DLL funkcji pobierania API i wykonać jakąś operację, jak kopiowanie do systemu32 – saeed

+1

Mój wielki problem polega na tym, że IE8 nie obsługuje File API jakikolwiek nawet plik wsadowy do wykonania jakiejś rzeczy – saeed

+0

@saeed Jedynym sposobem na uzyskanie interfejsu API plików obsługiwanego w IE jest posiadanie IE9 +. Nie możesz także zmienić żadnej biblioteki DLL ani instalować żadnego oprogramowania z poziomu aplikacji internetowej - taka możliwość byłaby ogromnym naruszeniem bezpieczeństwa (pamiętaj, że jesteś w piaskownicy). – tpeczek

2

Po kilku badaniach, nie ma sposobu, aby włączyć API pliku w IE8, ale mam coś, co chcesz się z Tobą podzielić .....
Nie bezpośrednio, HTML 5 nie jest obsługiwany przez IE8 . Istnieją dodatki do Canvas, a także Google Chrome Frame, wtyczka do dodawania HTML 5 do IE starszego niż 9.
Jak zrozumiałam, Google Chrome Frame to doskonały sposób na użycie HTML5.
Zwiększa IE prędkości 10 razy i również to użycie jest bardzo proste i opiszę to dla was wszystkich członków ...
Google Chrome Frame

plugin dla programu Internet Explorer, która dodać do przeglądarki Microsoftu, pełny HTML 5 wsparcia i kompilator JavaScript w przeglądarce Chrome! Stabilna wersja została wydana 22 września 2010 r. I wiele stron dodało kod na swoich stronach.

Ta wtyczka działa w Internet Explorer 6, 7 i innych wersjach. Google chce przełamać barierę, która uniemożliwia rozwój sieci: najczęstszą przeglądarkę i jej brak zgodności z nowymi standardami.

Po rozpoznaniu, Internet Explorer będzie działał pod WebKit, mechanizmem renderowania Chrome i Safari, i użyje ultraszybkiego kompilatora JavaScript w zamian, jeśli interpretator IE.

Zaletą tej wtyczki jest świetna kompatybilność aplikacji internetowych i stanie się jeszcze bardziej użyteczna dzięki WebGL zintegrowanemu z Webkit, który pozwala nam korzystać z aplikacji w 3D w przeglądarce: zupełnie inna sieć! WebGL jest również obsługiwany przez Firefoksa od wersji 3.7.

Od maja 2011 r. Wtyczkę można zainstalować bez uprawnień administratora, a więc w starszej wersji IE, które są zintegrowane z serwerem i nie można ich aktualizować.

Znacznik w kodzie strony internetowej wyświetli komunikat z monitem o pobranie wtyczki. Po jego instalacji, jak uruchomić IE i Chrome będzie obsługiwać HTML 5.

Charakterystyka Rama

Tryb off-line. Tagi i. Microsoft planuje także wdrożenie ich w IE. Płótno. WebGL. CSS 3. Kompilator JavaScript. Kompatybilność na poziomie Acid 3. Zobacz vidéo.

Reakcja firmy Microsoft

Spodziewaliśmy się, że Microsoft nie docenił naprawdę tę inicjatywę, która promuje HTML 5 na szkodę własnego rozwiązania, Silverlight. Firma zwraca uwagę na problem z bezpieczeństwem:

Biorąc pod uwagę problemy z bezpieczeństwem, w szczególności z wtyczkami, a w szczególności Google Chrome, Google Chrome Frame działa jako wtyczka, dwukrotnie zwiększył obszar ataków na złośliwe i złośliwe skrypty.

**

Chrome Frame. Automatyczna instalacja. -> http://www.google.com/chromeframe/?quickenable=true Google Chrome Kod ramki. ->https://developers.google.com/chrome/chrome-frame/
Chrome Frame: przewodnik dla programistów. ->http://www.chromium.org/developers/how-tos/chrome-frame-getting-started

**

+0

Poinformuj mnie o swoich opiniach – saeed

+1

Obsługa Google Chrome Frame się kończy. Ze strony internetowej: "Zwalniamy Chrome Frame i planujemy zaprzestanie obsługi i aktualizacji w styczniu 2014 r." – danial

2

To działa na mnie w pre IE10, używam https://github.com/eligrey/FileSaver.js dla każdej innej przeglądarce, uwaga chociaż działa to nie jest idealny, ponieważ jest to IE i dobrze wiesz, co mam na myśli

Nadzieja to pomaga

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

świetnie, ale pytanie dotyczy ie8. Tak więc biblioteka jest bezużyteczna w najlepszym wydaniu. –

+0

pracował dla mnie przy projekcie w IE8, mam również w innych projektach shimmed pobieranie plików do punktu końcowego "rpc" post, który odzwierciedla dostarczony ciąg binarny do pobrania z dostarczonym typem mime, który działa naprawdę dobrze – aqm

+0

to chyba musisz edytować post. Dodaj, że działa dla ie8. –

Powiązane problemy