W rzeczywistości nie masz dostępu do systemu plików (na przykład odczytu i zapisu plików lokalnych), jednak ze względu na specyfikację HTML5 File Api istnieją pewne właściwości pliku, do których masz dostęp, a rozmiar pliku jest jednym z nich.
W przypadku poniższego kodu HTML
<input type="file" id="myFile" />
spróbuj następujących rzeczy:
//binds to onchange event of your input field
$('#myFile').bind('change', function() {
//this.files[0].size gets the size of your file.
alert(this.files[0].size);
});
Ponieważ jest to część specyfikacji HTML5, będzie działać tylko dla nowoczesnych przeglądarek (wersja 10 wymagana dla IE) i dodałem tutaj więcej szczegółów i linków do innych informacji o plikach, które powinieneś znać: http://felipe.sabino.me/javascript / 2012/01/30 / javascipt-testing-the-file-size /
Obsługa starszych przeglądarek
Należy pamiętać, że stare przeglądarki zwracają null
wartość dla poprzedniego this.files
wywołania, więc dostęp this.files[0]
spowoduje wyjątek i przed użyciem należy sprawdzić obsługę interfejsu File API
jQuery
plik javascript nie został dodany (lub nie został poprawnie załadowany). Czy masz to dodane nahead
swojej stronie?Jeśli chcesz używać jQuery,
validate
możesz stworzyć tę metodę:Użyłbyś tego:
źródło
accept
reguły, w której powinieneś był użyćextension
reguły. ~ Zasada jest tylko dla typów MIME. Reguła jest dla rozszerzeń plików. Trzeba także zawierać ten plik na tych zasadach.accept
extension
additional-methods.js
$('#formid').validate({ rules: { inputimage: { required: true, extension: "png|jpe?g|gif", filesize: 1048576 }}, messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" } });
Ten kod:
Zwraca rozmiar pliku dla danych wejściowych formularza.
Na FF 3.6 i nowszych ten kod powinien wyglądać następująco:
źródło
Publikuję też moje rozwiązanie, używane do
FileUpload
formantu ASP.NET . Może ktoś uzna to za przydatne.źródło
f = this.files[0]
lub to się nie powiedzie w starszych przeglądarkach. np.if (f && (f.size > 8388608 || f.fileSize > 8388608))
Użyj poniżej, aby sprawdzić rozmiar pliku i wyczyść, jeśli jest większy,
źródło
Tego typu sprawdzanie można przeprowadzić za pomocą Flasha lub Silverlighta, ale nie Javascript. Piaskownica javascript nie zezwala na dostęp do systemu plików. Sprawdzenie rozmiaru musiałoby być wykonane po stronie serwera po przesłaniu.
Jeśli chcesz skorzystać z trasy Silverlight / Flash, możesz sprawdzić, czy nie są one domyślnie zainstalowane, to zwykły program obsługi przesyłania plików, który używa normalnych kontrolek. W ten sposób, jeśli mają zainstalowany Silverlight / Flash, ich wrażenia będą nieco bogatsze.
źródło
Wydaje mi się, że jest to najłatwiejsze, jeśli nie planujesz przesłania formularza za pomocą standardowych metod ajax / html5, ale oczywiście działa ze wszystkim.
UWAGI:
Kiedyś działało, ale już nie działa w chrome, właśnie przetestowałem powyższy kod i działał zarówno w FF, jak i Chrome (ostatni). Drugie [„0”] jest teraz pierwszym dzieckiem.
źródło
Spróbuj tego:
źródło