Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wysyłanie dużych plików na serwer
Wielebny.pl
post 17.06.2010, 18:55:12
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 1.06.2010

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
tehaha
post 17.06.2010, 19:10:39
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Wielebny.pl
post 17.06.2010, 19:16:13
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 1.06.2010

Ostrzeżenie: (0%)
-----


odnośnie php.ini

to mam wpisy

post_max_size = 202M
file_uploads = On
upload_tmp_dir =/var/www/tmp
upload_max_filesize = 202M
Go to the top of the page
+Quote Post
emtiej
post 17.06.2010, 21:24:38
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 18
Dołączył: 12.04.2009
Skąd: Rypin

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Wielebny.pl
post 17.06.2010, 22:35:14
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 1.06.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
fander
post 19.06.2010, 10:00:13
Post #6





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

Ostrzeżenie: (0%)
-----


z tego co wiem to nie da się wysyłać plików używając Ajax-a lub JS
Go to the top of the page
+Quote Post
erix
post 19.06.2010, 10:27:03
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Da się, trik nazywa się hidden iframe.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
fander
post 19.06.2010, 10:30:59
Post #8





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował fander 19.06.2010, 11:10:16
Go to the top of the page
+Quote Post
yevaud
post 19.06.2010, 14:52:43
Post #9





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.04.2025 - 03:52