2011-04-27 8 views
31

Buduję podstawową sieć społecznościową, a podczas rejestracji użytkownik przesyła wyświetlany obraz. Zasadniczo chciałem wyświetlić obraz, taki jak podgląd na tej samej stronie co formularz, tuż po wybraniu go i przed przesłaniem formularza.Typ danych wejściowych HTML = plik, pobierz obraz przed przesłaniem formularza.

Czy to możliwe?

+0

możliwy duplikat [Jak aby przesłać obraz podglądu przed przesłaniem przez JavaScript] (http://stackoverflow.com/questions/4094012/how-to-upload-preview-image-before-upload-through-javascript) –

Odpowiedz

4

Obraz nie może być wyświetlany, dopóki nie będzie serwowany z żadnego serwera. więc musisz przesłać obraz na swój serwer, aby pokazać jego podgląd.

+0

Dzięki, proste, ale dokładnie to, czego potrzebowałem :) – Tom

+0

wielkie wyjaśnienie –

+0

To jest zła odpowiedź ... chociaż pojawia się na najlepszych wyników ... zobacz inne linki w tej dyskusji lub http://stackoverflow.com/questions/14069421/ show-an-image-preview-before-upload –

46

Oto pełny przykład podglądu obrazu przed jego przesłaniem.

HTML:

<html> 
<head> 
<link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> 
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"></script> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 
<!--[if IE]> 
<script src="http://goo.gl/r57ze"></script> 
<![endif]--> 
</head> 
<body> 
<input type='file' onchange="readURL(this);" /> 
<img id="blah" src="#" alt="your image" /> 
</body> 
</html> 

JavaScript:

function readURL(input) { 
    if (input.files && input.files[0]) { 
    var reader = new FileReader(); 
    reader.onload = function (e) { 
     $('#blah') 
     .attr('src', e.target.result) 
     .width(150) 
     .height(200); 
    }; 
    reader.readAsDataURL(input.files[0]); 
    } 
} 
+4

dlaczego zaciemnić adresy URL? – goat

+0

to nie wyrenderuje adresów URL, ale wyświetla obrazy bezpośrednio z lokalnej pamięci masowej za pomocą osadzania obrazu w tekście ... po prostu spróbuj tego kodu, a następnie połącz się z niezrozumiałym komunikatem –

+1

. pytanie brzmiało, dlaczego użyłeś skrótu URL (goo.gl)? ukrywa/zaciemnia adresy URL – goat

10

Znalazłem simpler yet powerful tutorial który wykorzystuje fileReader Object. To po prostu tworzy element img, a przy użyciu obiektu FileReader, przypisuje swój atrybut źródłowego jako wartość wkładu formy

function previewFile() { 
 
    var preview = document.querySelector('img'); 
 
    var file = document.querySelector('input[type=file]').files[0]; 
 
    var reader = new FileReader(); 
 

 
    reader.onloadend = function() { 
 
    preview.src = reader.result; 
 
    } 
 

 
    if (file) { 
 
    reader.readAsDataURL(file); 
 
    } else { 
 
    preview.src = ""; 
 
    } 
 
}
<input type="file" onchange="previewFile()"><br> 
 
<img src="" height="200" alt="Image preview...">

0

function previewFile() { 
 
    var preview = document.querySelector('img'); 
 
    var file = document.querySelector('input[type=file]').files[0]; 
 
    var reader = new FileReader(); 
 

 
    reader.onloadend = function() { 
 
    preview.src = reader.result; 
 
    } 
 

 
    if (file) { 
 
    reader.readAsDataURL(file); 
 
    } else { 
 
    preview.src = ""; 
 
    } 
 
}
<input type="file" onchange="previewFile()"><br> 
 
<img src="" height="200" alt="Image preview...">

+0

czy mógłbyś dodać jakieś wyjaśnienia? Dzięki – Allan

Powiązane problemy