W moim formularzu HTML wpisałem plik typu, na przykład:
<inputtype="file"multiple>
Następnie wybieram wiele plików, klikając ten przycisk wejściowy. Teraz chcę wyświetlić podgląd wybranych zdjęć przed wysłaniem formularza. Jak to zrobić w HTML 5?
HTML5 zawiera specyfikację File API , która umożliwia tworzenie aplikacji, które pozwalają użytkownikowi na lokalną interakcję z plikami; Oznacza to, że możesz ładować pliki i renderować je w przeglądarce bez konieczności ich przesyłania. Częścią File API jest interfejs FileReader , który umożliwia aplikacjom internetowym asynchroniczne odczytywanie zawartości plików.
Oto krótki przykład, który wykorzystuje FileReaderklasę do odczytywania obrazu jako DataURL i renderuje miniaturę, ustawiając srcatrybut znacznika obrazu na adres URL danych:
Kod html:
<inputtype="file"id="files"/><imgid="image"/>
Kod JavaScript:
document.getElementById("files").onchange =function(){var reader =newFileReader();
reader.onload =function(e){// get loaded data and render thumbnail.
document.getElementById("image").src = e.target.result;};// read the image file as a data URL.
reader.readAsDataURL(this.files[0]);};
function handleFileSelect(evt){var files = evt.target.files;// Loop through the FileList and render image files as thumbnails.for(var i =0, f; f = files[i]; i++){// Only process image files.if(!f.type.match('image.*')){continue;}var reader =newFileReader();// Closure to capture the file information.
reader.onload =(function(theFile){returnfunction(e){// Render thumbnail.var span = document.createElement('span');
span.innerHTML =['<img style="height: 75px; border: 1px solid #000; margin: 5px" src="',
e.target.result,'" title="', escape(theFile.name),'"/>'].join('');
document.getElementById('list').insertBefore(span,null);};})(f);// Read in the image file as a data URL.
reader.readAsDataURL(f);}}
document.getElementById('files').addEventListener('change', handleFileSelect,false);
Po prostu wyłącz element wejściowy pliku, a nie zostanie on przesłany! A więc w powyższym przykładzie:document.getElementById("uploadImage").disabled = true
Tutaj w kodzie jQuery najpierw sprawdzam rozszerzenie pliku. tj. prawidłowy plik obrazu do przetworzenia, następnie sprawdzi, czy obsługa przeglądarki FileReader API jest ustawiona na tak, a następnie przetworzy tylko w przeciwnym razie wyświetla odpowiedni komunikat
$("#fileUpload").on('change',function(){//Get count of selected filesvar countFiles = $(this)[0].files.length;var imgPath = $(this)[0].value;var extn = imgPath.substring(imgPath.lastIndexOf('.')+1).toLowerCase();var image_holder = $("#image-holder");
image_holder.empty();if(extn =="gif"|| extn =="png"|| extn =="jpg"|| extn =="jpeg"){if(typeof(FileReader)!="undefined"){//loop for each file selected for uploaded.for(var i =0; i < countFiles; i++){var reader =newFileReader();
reader.onload =function(e){
$("<img />",{"src": e.target.result,"class":"thumb-image"}).appendTo(image_holder);}
image_holder.show();
reader.readAsDataURL($(this)[0].files[i]);}}else{
alert("This browser does not support FileReader.");}}else{
alert("Pls select only images");}});
function handleFileSelect(evt){var files = evt.target.files;// Loop through the FileList and render image files as thumbnails.for(var i =0, f; f = files[i]; i++){// Only process image files.if(!f.type.match('image.*')){continue;}var reader =newFileReader();// Closure to capture the file information.
reader.onload =(function(theFile){returnfunction(e){// Render thumbnail.var span = document.createElement('span');
span.innerHTML =['<img style="height: 75px; border: 1px solid #000; margin: 5px" src="',
e.target.result,'" title="', escape(theFile.name),'"/>'].join('');
document.getElementById('list').insertBefore(span,null);};})(f);// Read in the image file as a data URL.
reader.readAsDataURL(f);}}
document.getElementById('files').addEventListener('change', handleFileSelect,false);
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.