Potrzebuję podgląd obrazu przed przesłaniem formularza. Pracuję z Rails 3 i potrzebuję czegoś, co jest kompatybilne z przeglądarką. Jakieś pomysły, w jaki sposób mogę to osiągnąć?Szyny 3: najlepszy sposób na podgląd obrazu przed przesłaniem
Odpowiedz
Tak! :) Główną ideą jest użycie klasy Javascript FileReader, która jest naprawdę przydatna do tego, co musisz zrobić.
Wystarczy, że wsłuchasz się w zdarzenie "change" na swoim pliku wejściowym, a następnie wywołasz metodę, która będzie korzystać z metody "readAsDataURL()" klasy FileReader. Następnie wystarczy wypełnić źródło "podglądu znacznika img", zwracając wynik metody ...
Napisałem Ci simple jsFiddle, który osiąga to, co chcesz. Można zobaczyć mojego kodu poniżej:
<!-- HTML Code -->
<div class="upload-preview">
<img />
</div>
<input class="file" name="logo" type="file">
//JS File
$(document).ready(function(){
var preview = $(".upload-preview img");
$(".file").change(function(event){
var input = $(event.currentTarget);
var file = input[0].files[0];
var reader = new FileReader();
reader.onload = function(e){
image_base64 = e.target.result;
preview.attr("src", image_base64);
};
reader.readAsDataURL(file);
});
});
oraz w dokumentacji Mozilla, masz another example (na pewno bardziej wydajny). To rozwiązanie powinno działać z przeglądarką Safari (wersja 6.0+).
Jest to jedyny znany mi sposób podglądu obrazu przed przesłaniem formularza, ale uważam, że jest to dość powszechny sposób. Oczywiście nie ma to nic wspólnego z Ruby On Rails, ponieważ używamy tylko Javascript tutaj ... Nie można byłoby tego zrobić używając Railsów tylko dlatego, że musiałbyś przesłać obraz przed renderowaniem go. (Ponieważ Rails jest po stronie serwera, myślę, że doskonale rozumiesz dlaczego.))
Wielkie dzięki za odpowiedź. Spróbuję go zaimplementować dzisiaj :) – Henri
Cześć Kulgar, czy muszę zainstalować cokolwiek (np. Jquery), aby użyć powyższego kodu? – learner
Proszę również powiedzieć, gdzie muszę napisać ten kod. Chodzi mi o to, w jakim pliku mam napisać javascript ** (pod asset/javascript/controller_name.js?) ** iw jakim pliku muszę napisać kod html ** (wewnątrz aplikacji/widoków?) ** w szynach? Przepraszam, może to być zbyt proste, ale jestem całkiem nowy dla szyn. – learner
- 1. Zmiana rozmiaru obrazu przed przesłaniem
- 2. Tworzenie podglądu obrazu na żywo (przed przesłaniem) za pomocą JQuery
- 3. Wyświetlenie wybranego obrazu PHP przed przesłaniem
- 4. Zmniejszenie obrazu przed przesłaniem za pomocą javascript
- 5. Android CustomWebChromeClient openFileChooser Zmień rozmiar obrazu przed przesłaniem
- 6. Czy można wyświetlić podgląd lokalnych zdjęć przed przesłaniem ich za pomocą formularza?
- 7. sposób dołączania plików w pliku wejściowym wiele plików przed przesłaniem
- 8. Zmiana pola wejściowego przed przesłaniem
- 9. Jak zrobić coś przed przesłaniem?
- 10. Angularjs kompresuje obraz przed przesłaniem
- 11. Jak opóźnić formularz przed przesłaniem
- 12. Podgląd obrazu z jQuery
- 13. Jaki jest najlepszy sposób wywołania funkcji StartPreview() po przechwyceniu obrazu?
- 14. Szyny 3 + activerecord, najlepszy sposób na "aktualizację zbiorczą" pojedynczego pola dla wszystkich rekordów spełniających warunek
- 15. Zatrzymaj pole wejściowe w formularzu przed przesłaniem
- 16. Jaki jest najlepszy sposób przetestowania aplikacji szyny?
- 17. Typ danych wejściowych HTML = plik, pobierz obraz przed przesłaniem formularza.
- 18. Sprawdź wymiary obrazu (wysokość i szerokość) przed przesłaniem obrazu za pomocą PHP
- 19. Możliwość zmiany rozmiaru obrazu (strony klienta) na formularzu HTML przed przesłaniem?
- 20. Link do aplikacji iOS przed przesłaniem aplikacji
- 21. Kompresja plików przed przesłaniem po stronie klienta
- 22. Wstrzymaj formularz przed przesłaniem wraz z javascript
- 23. podgląd formy grawitacyjnej przesłania obrazu
- 24. Wykonywanie kodu javascript bezpośrednio przed przesłaniem strony
- 25. Potwierdzenie przed przesłaniem formularza za pomocą jQuery
- 26. Zatrzymaj formularz przed przesłaniem, używając Jquery
- 27. wyzwalanie aktywnego zatwierdzania formularza ręcznie przed przesłaniem
- 28. Najlepszy sposób na ukrycie obrazu w systemie Android?
- 29. Szyna 3 - wiadomości flash uciekły, najlepszy sposób na unescape
- 30. Szyny 3. przed sprawdzaniem oryginalności, aby zapobiec usuwaniu rekordów nadrzędnych.
Powinieneś rzucić okiem na: http://blueimp.github.io/jQuery-File-Upload/. Wiem ... to narzędzie JQuery, a nie klejnot lub specjalna funkcja formularza. Ale! Jest bardzo łatwy w użyciu i bardzo dobrze integruje się z RoR ... Plus, to zwiększy Twój User Experience! Jeśli nie jesteś zainteresowany korzystaniem z tej wtyczki, nadal mogę opublikować odpowiedź i wyjaśnić, w jaki sposób możesz osiągnąć to, co chcesz zrobić, tak jak zrobiłem to już dla projektu. :) – Kulgar
Dzięki za odpowiedź Kulgar. Już sprawdziłem klejnot, ale to naprawdę nie pasuje do moich potrzeb. Właśnie chcę pokazać jeden obraz przesłany przed kliknięciem przycisku "Prześlij". Nie znalazłem rozwiązania, które jeszcze działa na safari. – Henri
OK, wtedy opublikuję odpowiedź. :) – Kulgar