2012-04-15 23 views
20

Aby łatwiej manipulować różnymi obrazami po stronie klienta za pomocą Javascript, napisałem funkcję po stronie serwera (w VB 2010), aby przekonwertować plik na ciąg base64, który wysyłam do klienta.Wyświetlanie obrazu Internet Explorer i Base64

Kiedy wypróbowałem go w Internet Explorerze 8.0 z 3 różnymi obrazami, 1 portretem i 2 pejzażami, zdałem sobie sprawę, że tylko obraz portretowy został wyświetlony w całości, a jednocześnie oba zdjęcia krajobrazowe zostały obcięte (widzę tylko górną część obraz).

Pomyślałem, że mam błąd w mojej funkcji konwersji, dopóki nie spróbowałem swojej lokalnej strony z Firefoksem: każdy obraz jest doskonale wyświetlany przez Firefoksa.

Moje pytanie brzmi: czy jest to znany błąd przeglądarki Internet Explorer? Jeśli odpowiedź brzmi "tak", czy istnieje dobrze znany środek zaradczy dla tego dobrze znanego błędu?

+3

Link do strony testowej? – Marcel

+3

Jest to dobrze znany błąd, IE ma limit znaków nałożony na wszystkie identyfikatory URI, co oznacza, że ​​niektóre identyfikatory URI w postaci danych będą zawierały nieco treści. –

+0

Oprócz komentarza Andrew Dunna, lepiej wykorzystaj system plików lub bazę danych (np. SQL 2008, który ma służyć do wyświetlania obrazów). Nie sądzę, żebyś zbliżył się do kompresji protokołów takich jak jpg, gif, png. Również odkryłem, że używanie dostawcy ścieżki wirtualnej do wyświetlania obrazów z formatu dB jest znacznie wolniejsze niż system plików, dlatego zalecam ponowne przemyślenie projektu. –

Odpowiedz

14

IE8 może wykonywać obrazy URI Base64 o wielkości do 32 kb. Jest to dość denerwujące ograniczenie, ale nadal można uzyskać dzięki ikonom/etc. Pamiętaj, że kodowane w Base64 obrazy mają średnio o 33% więcej danych przesyłanych w dół rury, więc ... eh, no wiesz, użyj swojej oceny.

Dla wszystkich zainteresowanych, jest to również możliwe, aby te miejsca pracy w IE6/7 (bez, dodam, tej granicy 32KB ...): http://venodesigns.net/2010/06/17/you-got-your-base64-in-my-css/