2013-06-16 15 views
6

Próbuję pokazać klientowi obraz który został wybrany:Jak wyświetlić wybrany obraz bez wysyłania danych do serwera?

<input type="file" onchange="showImage(this)"/> 

Ale nie mogę odczytać wartość na wejściu, jak już wyrejestrowany here. Czy możliwe jest wyświetlenie obrazu?

W onchange Mogę wysłać formularz do serwera, a serwer może wysłać dane z powrotem, ale czy to naprawdę konieczne? Czy klient nie może wyświetlić danych bez ping-ponga na serwerze? Czy to jest problem bezpieczeństwa?

+0

Jeśli złożenie formuj w ten sposób, a następnie tak - ping-pong na serwer jest nieunikniony. Można załadować obraz z lokalnego systemu plików za pomocą interfejsu API pliku HTML5 i wyświetlić go. –

Odpowiedz

13

Można użyć FileReader web-api dla tego przedmiotu, zobacz ten fragment:

HTML

<input id="src" type="file"/> // input you want to read from (src) 
<img id="target"/> // image you want to display it (target) 

javascript

function showImage(src,target) { 
    var fr=new FileReader(); 
    // when image is loaded, set the src of the image where you want to display it 
    fr.onload = function(e) { target.src = this.result; }; 
    src.addEventListener("change",function() { 
    // fill fr with image data  
    fr.readAsDataURL(src.files[0]); 
    }); 
} 

var src = document.getElementById("src"); 
var target = document.getElementById("target"); 
showImage(src,target); 
+2

Nice. Czy działa we wszystkich przeglądarkach? – revolver

+0

Zobacz link. Powinien działać we wszystkich głównych przeglądarkach i od IE10. –

+0

'var input = this' w twoim kodzie nic nie robi. Zmienna "input" nigdy nie jest używana. –

Powiązane problemy