Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz do wgrania pliku
Forum PHP.pl > Forum > PHP
stom123
Witam! Potrzebuję zrobić formularz kontaktowy z zapisem plików na serwer.
Użytkownik podaje nazwę folderu i 36 plików do wgrania (po trzy do każdego miesiąca). Zrobiłam formularz jednak działa on na serwerze lokalnym a jak przenoszę go na hosting to wczytuje tylko pierwsze 20 plików.

Tutaj jest skrypt:
  1. if(isset($_POST['submit'])) {
  2. $folderStr = $_REQUEST['folderName'];
  3. $upload_folder = preg_replace("'\s+'", '-', $folderStr);
  4.  
  5. $upload_path1 = './upload_files/'.$upload_folder.'/1/';
  6. ...
  7. $upload_path12 = './upload_files/'.$upload_folder.'/12/';
  8.  
  9. if(is_dir($upload_path)) {
  10. echo 'wybierz inną nazwę folderu';}
  11. else {
  12. mkdir('./upload_files/'.$upload_folder.'/', 0777);chmod("$upload_path1", 0777);
  13. ...
  14. mkdir('./upload_files/'.$upload_folder.'/', 0777);chmod("$upload_path12", 0777);
  15.  
  16.  
  17. $path1= $upload_path1.$_FILES['uploadArray']['name'][0];
  18. ...
  19. $path36= $upload_path12.$_FILES['uploadArray']['name'][35];
  20.  
  21. if($_FILES['uploadArray']['size'][0]>0)
  22. {
  23. copy($_FILES['uploadArray']['tmp_name'][0], $path1);
  24. echo "Styczeń 1 : ".$_FILES['uploadArray']['name'][0]."<BR/>";
  25.  
  26. }
  27. ...
  28. if($_FILES['uploadArray']['size'][35]>0)
  29. {
  30. copy($_FILES['uploadArray']['tmp_name'][35], $path36);
  31. echo "Grudzień 3 : ".$_FILES['uploadArray']['name'][35]."<BR/>";
  32.  
  33. }
  34. echo "<BR/>Pliki zaladowane";
  35. }
  36. }


  1. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="contactform" enctype="multipart/form-data">
  2.  
  3. <tr>
  4. <td>
  5. <input name="uploadArray[]" type="file" id="uploadArray[]" size="10" />
  6. ...
  7. ...
  8. <input name="uploadArray[]" type="file" id="uploadArray[]" size="10" />
  9. </td>
  10. </tr>
  11. <tr>
  12. <td>
  13. <input type="submit" value="Upload" name="submit" class="button" />
  14. </td>
  15. </tr>
  16. </table>
  17. </form>



I tak jak wspomniałam. Ładuje tylko 20 pierwszych plików. Czy coś trzeba zmienić w ustawieniach hostingu bo na serwerze lokalnym mi działa?

Czy ktoś ma pomysł jak jeszcze inaczej można wgrać pliki na serwer poprzez formularz?
Sephirus
Na 99,99999% tak - możliwe że jest takie ograniczenie - ilości danych albo liczby requestów na hostingu - zgłoszenie do nich powinno pomóc
stom123
Ok dzięki za odpowiedź

Mam jeszcze jedno pytanie.
Jak wgrywam na jeden hosting to wszystko jest ok. Pliki są wgrywane poprawnie
Na drugim hostingu nic się nie dzieje. Prawa dostępu są ustawione na 777 ale nie ustala wlasciciela/grupy tzn są ustawione na nobody/nogroup
Jak mogę to zmienić?
d0man
Witam, temat pasuje to pozwole sobie sie podłączyć wink.gif

Otóż mam lokalny serwer postawiony na server2go w win7.
problem zdaje się polegać na jakimś ograniczeniu typów plików, ktore mogą być przesyłane - taki wniosek wyciągam po 3 dniach poszukiwan i sprawdzania róznych możliwosci.

podczas wysyłania plików (różnej wielkości) zdjęc(gif, jpeg, itp), exe, mp3...

$_FILES['plik'][name] => nazwa_pliku.gif/jpg/exe/mp3
$_FILES['plik'][type] =>
$_FILES['plik'][tmp_name] =>
$_FILES['plik'][error] => 3
$_FILES['plik'][size] => 0

czyli plik przesyła się częściowo, przez co w tablicy $_POST nie ma nawet przycisku Wysyłania (po kliknieciu inputa submit $_POST['submit'] nie istnieje), a w efekcie po wyslaniu formularza odswieza sie po prostu plik php bez żadnych danych.

natomiast , co ciekawe, większe nawet niż powyższe pliki, ale o rozszerzeniach m.in.:

html, sql, css, php, inf, cpp

przesyłają sie bez błędu ($_POST['submit'] wówczas istnieje):
$_FILES['plik'][name] => nazwa_pliku.html | sql | css | php | inf | cpp
$_FILES['plik'][type] => text/css (lub inny)
$_FILES['plik'][tmp_name] => C:\Users\dmn\AppData\Local\Temp\php3F00.tmp
$_FILES['plik'][error] => 0
$_FILES['plik'][size] => xxxx

zauważyłem jeszcze, że mimo brak błędu, w folderze wskazanym przez $_FILES['plik']['tmp_name'] nie ma uploadowanego pliku (ww typu, który nie zwraca błędu), w następstwie czego zapewne funkcja move_uploaded_file() nie przenosi mi go we wskazane miejsce, bo nie ma czego przenosić...

Jeśli to ma znaczenie Biblioteka GD - włączona.

A to ustawienia php.ini pobrane poleceniami ini_get():

display_errors = 1
register_globals = 0
post_max_size = 8M
upload_max_filesize = 2M
post_max_size+1 = 9

oczywiscie w znaczniku <form> dałem enctype="multipart/form-data"
jest również pole hidden name="MAX_FILE_SIZE" o dostatecznie dużej wartości... jego usuniecie nic nie zmienia

czy jest coś jeszcze co mógłbym sprawdzić by rozwiązać ten problem?
abort
Kod
upload_max_filesize = 2M

Cosik mały rozmiar jak na mp3, czy exe. A zdjęcie? Cóż, zgrane bezpośrednio z aparatu na pewno jest większe. Przeskalowane powinno się zmieścić.

Zwiększ do wymaganej przez ciebie wartości i zrestartuj serwer www.
d0man
sprawdzałem na plikach poniżej 2mb oczywiscie, wiec to raczej nie to...
obrazy o wadze ~10-100kb też nie wchodzą
sprawdzane mp3 mialy maksimum okolo 1,5 mb, krótkie wavy tez nie wchodziły, natomiast playlista m3u (jak i inne ww.) wczytała sie do tablicy, ale w katalog tymczasowy wyswietlony w $_FILES[plik][tmp_name] nie istnieje mimo to.

dziwna sprawa

PS dla pewnosci jednak, zwiekszylem max_file_size do 8M w kazdym razie i nic sie nie zmieniło...
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.