Muszę przesłać tylko plik obrazu poprzez <input type="file">
tag.
Obecnie akceptuje wszystkie typy plików. Ale chcę, aby ograniczyć ją tylko do konkretnych rozszerzeń plików graficznych, które obejmują .jpg
, .gif
etc.
Jak mogę uzyskać tę funkcjonalność?
Odpowiedzi:
Użyj atrybutu accept znacznika wejściowego. Aby więc akceptować tylko pliki PNG, JPEG i GIF, możesz użyć następującego kodu:
Lub po prostu:
Pamiętaj, że daje to jedynie podpowiedź dla przeglądarki, jakie typy plików mają być wyświetlane użytkownikowi, ale można to łatwo obejść, dlatego zawsze powinieneś sprawdzać poprawność przesłanego pliku również na serwerze.
Powinien działać w IE 10+, Chrome, Firefox, Safari 6+, Opera 15+, ale obsługa jest bardzo pobieżna na telefony komórkowe (od 2015 r.), A według niektórych raportów może to w rzeczywistości uniemożliwić przesyłanie czegokolwiek przez niektóre przeglądarki mobilne, więc koniecznie przetestuj platformy docelowe.
Szczegółowa obsługa przeglądarki znajduje się na stronie http://caniuse.com/#feat=input-file-accept
źródło
accept="file/csv, file/xls"
czy to ważne?image/x-png
? Według tej listy jest po prostuimage/png
. iana.org/assignments/media-types/media-types.xhtmlZa pomocą tego:
działa zarówno w FF, jak i Chrome.
źródło
Użyj tego w ten sposób
To zadziałało dla mnie
https://jsfiddle.net/ermagrawal/5u4ftp3k/
źródło
Kroki:
1. Dodaj atrybut accept do znacznika wejściowego
2. Sprawdź
poprawność za pomocą javascript 3. Dodaj weryfikację po stronie serwera, aby sprawdzić, czy zawartość jest rzeczywiście oczekiwanym typem pliku
W przypadku HTML i javascript:
Wyjaśnienie:
źródło
Można to osiągnąć przez
Ale to nie jest dobry sposób. musisz kodować po stronie serwera, aby sprawdzić plik lub obraz.
Sprawdź, czy plik obrazu to rzeczywisty obraz czy fałszywy obraz
Aby uzyskać więcej informacji, zobacz tutaj
http://www.w3schools.com/tags/att_input_accept.asp
http://www.w3schools.com/php/php_file_upload.asp
źródło
możesz użyć
accept
atrybutu do<input type="file">
przeczytania tej dokumentacji http://www.w3schools.com/tags/att_input_accept.aspźródło
Używając type = "file" i accept = "image / *" (lub żądanego formatu), pozwól użytkownikowi wybrać plik o określonym formacie. Ale musisz ponownie to sprawdzić po stronie klienta, ponieważ użytkownik może wybrać inny typ plików. To działa dla mnie.
A potem w twoim skrypcie javascript
źródło
const file: File = imageInput.files[0];
? Ponadto przypisanie id do danych wejściowych nie odbywa się w tradycyjny sposób.Jeśli chcesz przesłać wiele zdjęć jednocześnie, możesz dodać
multiple
atrybut do danych wejściowych.źródło