Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie dużych plików na serwer
Forum PHP.pl > Forum > PHP
Wielebny.pl
Potrzebuje aby na serwer user miał możliwość wysyłania dużych plików ale nie większych niż 200 MB
Utworzyłem sobie taki kodzik:
  1. <?php $up=210000000?>
  2.  
  3. echo('<div>
  4. <Center>
  5. <z>Wysyłanie pliku </z>
  6. <form enctype="multipart/form-data" action="index.php?up" method="post">
  7. <input type="text" name="MAX_FILE_SIZE" value="'.$up.'" align="middle"><br><br>
  8. Załaduj ten plik: <input name="userfile" type="file" size="50" align="middle"><br>
  9. <input type="submit" value="Wyślij" align="right">
  10. </form>
  11. </Center>
  12. </div>')


zaś na drugim formularzu z kodem php jak na początek prosta sprawę mam:
  1. echo ('Wysyłanie proszę czekać.');
  2. if ($_FILES['userfile']['size'] > $_POST['MAX_FILE_SIZE'])
  3. {
  4. message_box('Rozmiar pliku przekroczył wartość graniczną !','box','red');
  5. }
  6. else
  7. message_box('Wielkość pliku ok.','bigbox','blue');

message_boxy to są moje komunikaty.
tak wiec na plikach małych nie ma żadnego problemu wszystko działa choć jak zrobię wyślij to mieli dysk mieli mieli i mieli.
Ale na za dużym pliku na 700 mb zwraca mi komunikat:
Wysyłanie proszę czekać.
Notice: Undefined index: userfile in /var/www/serwis/upload_file/upload_file_action.php on line 20

Notice: Undefined index: MAX_FILE_SIZE in /var/www/serwis/upload_file/upload_file_action.php on line 20
Wielkość pliku ok.

I tu moje pytanie? Dlaczemu tak się dzieje i nie rejestruje w tablicy file? Czy można zrobić tak aby user miał napis WYSYŁANIE i wtedy jakaś akcja się tam podejmowała bo teraz po naciśnięciu wyślij to nic nie na ekranie nie zmienia aż dysk nie przestanie mielić.
tehaha
możesz mieć ograniczenie na serwerze co do wielkości przesyłanych plików, a jeżeli chcesz pokazywać jakiś pasek postępu to zaimplementuj jakiś skrypt: google -> file upload progress bar
Wielebny.pl
odnośnie php.ini

to mam wpisy

post_max_size = 202M
file_uploads = On
upload_tmp_dir =/var/www/tmp
upload_max_filesize = 202M
emtiej
musisz w php.ini tak jak wyżej Wielebny napisał zwiększyć wielkość maksymalną wysyłanego pliku, ale także zwiększyć maksymalny czas wykonywania skryptu(na bardzo długo, około godziny)
Wysyłanie dużych plików formularzem za pomocą PHP nie jest dobrym pomysłem. Do takich rzeczy lepszy jest JavaScript, albo Ajax, który dzieli plik na party i te party przekazuje do PHP, na żadnych hostingu dostawca nie ma ustawionego maksymalnego czasu wykonywania skryptu na godzinę i maksymalnej wielkości wysyłanego pliku na ponad 200mb smile.gif
Wielebny.pl
Nie będę tu czarował i powiem ,że nie mam pojęcia na temat ajaxa i JS. Czy mógłbyś mi podać jakiś przykład takiego skryptu a bym sobie go przeanalizował i dostosował do siebie bo w końcu trzeba będzie się tego nauczyć a musiał bym mieć jakiś konkretny punkt zaczepienia. W takim przypadku moje pytanie dlaczego mój skrypt nie zwraca mi komunikatu ,że PLIK JEST ZA DUŻY dla plików gigantycznych (np 1GB) a wywala błąd tablicy FILES chyba już pozostaje nie aktualne.
fander
z tego co wiem to nie da się wysyłać plików używając Ajax-a lub JS
erix
Da się, trik nazywa się hidden iframe.
fander
to żaden Ajax smile.gif lepiej użyć flaszowego upladera np gogolowskiego

Znalazłem coś odnośnie GoogleGears http://www.appelsiini.net/2009/10/drag-and...th-google-gears powinno być przydatne
yevaud
nie kazdy ma gearsy
iframe to tez ajax smile.gif

ajaxowy uploader maasz na przyklad na
http://valums.com/wp-content/uploads/ajax-...demo-jquery.htm
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.