[js] jak pobrać rozmiar pliku

0

Z tego co mi wiadmom to nie można z poziomu JavaScript dobrać się do rozmiaru jakiegoś pliku na dysku lokalnym. Może znacie jakieś sztuczki aby to zrobić?

Chodzi mi o to aby przed uploadowaniem pliku na server sprawdzić czy rozmiar wysyłanego pliku nie jest za duży (po co ktoś ma wysyłać 100 MB skoro server mu tego nie przyjmie)

0

Możesz to zrobić językiem server-side, bo i nim wysyłasz plik na serwer. W JS tego nie osiągniesz.

0

robiąc skrypt w perlu możesz zerwać połączenie zaraz po dostaniu nagłówka z rozmiarem pliku
możesz też dodać ukryte pole do formularza - nie pamiętam jak się ono nazywa i chociaż w praktyce nigdy nie wypróbowałem to teoretycznie przeglądarka nie powinna dopuścić do wysłania pliku przekraczającego rozmiar podany w tym parametrze

0

w php limit przesylanego pliku jest ustawiony w php.ini(zwykle 4MB) i nie prześle nigdy na serwer więcej danych

0
ciapek888 napisał(a)

w php limit przesylanego pliku jest ustawiony w php.ini(zwykle 4MB) i nie prześle nigdy na serwer więcej danych

nie prześle ale będzie próbował więc o tym że nie prześle dowie się dopiero po kilkunastu minutach co może wkurzyć

0
Adamo napisał(a)

nie prześle ale będzie próbował więc o tym że nie prześle dowie się dopiero po kilkunastu minutach co może wkurzyć

No właśnie. A ja chciałbym tego uniknąć. Formularz odbiera strona PHP. Czy można szybko wykryć że użytkownik próbuje wepchnąć za duży plik i przerwać jego upload?

Adamo napisał(a)

robiąc skrypt w perlu możesz zerwać połączenie zaraz po dostaniu nagłówka z rozmiarem pliku

Czy da się to zrobć w PHP? W $_FILES nigdzie nie ma mowy o rozmiarze plik.

0

No jak nie ma, jak jest.

$_FILES['plik']['size']
0
Coldpeer napisał(a)

$_FILES['plik']['size']
No tak, tylko że w tablicy $_FILES cokolwiek pojawi się dopiero po przesłaniu całego pliku

0

Tak? :> A np. takie coś to jak działa?

// czy rozmiar pliku jest mniejszy od 2 kB
if($_FILES['plik']['size'] < 2048)
{
  move_uploaded_file(...); // dopiero przesyłamy plik
}
0

move_uploaded_file(...); // dopiero przesyłamy plik

W tym momencie plik już jest przesłany, tylko znajduje się w tempie pod tymczasową nazwą.
move_uploaded_file służy do przeniesienia tego pliku z temp'a do właściwego katalogu na serwerze

0

Racja [wstyd] Zapomniałem o $_FILES[]['tmp_name'].

0

Nie znam się, ale może jakiś applet javy byłby w stanie pobrać rozmiar pliku przed wysłaniem...

0
ciapek888 napisał(a)

Nie znam się, ale może jakiś applet javy byłby w stanie pobrać rozmiar pliku przed wysłaniem...

Aplet na pewno dałby radę ale wolę tego uniknąć. Niektórzy mogą mieć powyłączaną obsługę javy w przeglądarkach i wtedy zipa dumna ;-) !

0

Albo mogą nie mieć JVM. Jak niżej (wyżej?) podpisany. Aplet ActiveX też by mogł to zrobić tak nawiasem :)

0 użytkowników online, w tym zalogowanych: 0, gości: 0