Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Upload plików - 000webhost.com
Forum PHP.pl > Forum > Przedszkole
Webmasterr
Mam stronę w darmowym hostingu 000webhost.com

Uploadowanie plików z poziomu przeglądarki (przez PHP) zwykłym sposobem generuje błędy:

Kod
Warning: filesize() [function.filesize]: stat failed for Array in /home/a4220993/public_html/wrzucplik.php on line 37

Warning: filesize() [function.filesize]: stat failed for Array in /home/a4220993/public_html/wrzucplik.php on line 38

Warning: move_uploaded_file(/pliki/txt.txt) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/a4220993/public_html/wrzucplik.php on line 46

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phplucVRQ' to '/pliki/txt.txt' in /home/a4220993/public_html/wrzucplik.php on line 46


Skrypt uploadowania:

  1. $location = '/pliki/'.basename($_FILES['file']['name']);
  2.  
  3. $nazwa = $_FILES['file']['name'];
  4. $opis = htmlspecialchars(strip_tags(trim(nl2br($_POST['opis']))), ENT_QUOTES);
  5. $wielkosc = round(filesize($_FILES['file']) / 1000000, 2);
  6. $wielkoscKB = round(filesize($_FILES['file']) / 1000);
  7. $wielkoscKB = number_format($wielkoscKB, 0, '.', ' ');
  8.  
  9. require 'database.php';
  10.  
  11. $query = "INSERT INTO PLIKI(`NAZWA`, `OPIS`, `WIELKOSC`) VALUES ('$nazwa', '$opis', '$wielkosc MB ($wielkoscKB KB)');";
  12. $sql = mysql_query($query);
  13.  
  14. move_uploaded_file($_FILES['file']['tmp_name'], $location);
  15.  
  16. if(!is_uploaded_file($_FILES['file']))
  17. {
  18. echo "Plik nie został załadowany...";
  19. }
  20. else
  21. {
  22. echo "Plik został załadowany poprawnie...";
  23. }


Czemu to nie działa?
Fifi209
Bo file jest tablicą.
Webmasterr
Cytat(fifi209 @ 4.03.2011, 23:01:21 ) *
Bo file jest tablicą.


Czyli jak to przerobić?
Mefiuu

  1.  
  2. if(!is_uploaded_file($_FILES['file']['tmp_name']))
  3. {
  4. echo "Plik nie został załadowany...";
  5. }
  6. else
  7. {
  8. echo "Plik został załadowany poprawnie...";
  9. }



ale trochę to nie logiczna. najpierw przenosisz plik, po czym sprawdzasz czy ktoś go w ogóle wrzucił...
Webmasterr
Thx smile.gif
Teraz kod wygląda tak, a są te same błędy:

  1. if(is_uploaded_file($_FILES['file']))
  2. {
  3. $location = '/pliki/'.basename($_FILES['file']['name']);
  4.  
  5. $nazwa = $_FILES['file']['name'];
  6. $opis = htmlspecialchars(strip_tags(trim(nl2br($_POST['opis']))), ENT_QUOTES);
  7. $wielkosc = round(filesize($_FILES['file']) / 1000000, 2);
  8. $wielkoscKB = round(filesize($_FILES['file']) / 1000);
  9. $wielkoscKB = number_format($wielkoscKB, 0, '.', ' ');
  10.  
  11. require 'database.php';
  12.  
  13. $query = "INSERT INTO PLIKI(`NAZWA`, `OPIS`, `WIELKOSC`) VALUES ('$nazwa', '$opis', '$wielkosc MB ($wielkoscKB KB)');";
  14. $sql = mysql_query($query);
  15.  
  16. if(!move_uploaded_file($_FILES['file']['tmp_name'], $location))
  17. {
  18. echo "Plik nie został załadowany...";
  19. }
  20.  
  21. else
  22. {
  23. echo "Plik został załadowany poprawnie...";
  24. }
  25. }
  26. else
  27. {
  28. echo "Plik nie został załadowany...";
  29. }


Jak rozwiązać ten problem?
Mefiuu
  1. $wielkosc = round(filesize($_FILES['file']) / 1000000, 2);
  2. $wielkoscKB = round(filesize($_FILES['file']) / 1000);


zmień na
  1. $wielkosc = round($_FILES['file']['size']) / 1000000, 2);
  2. $wielkoscKB = round($_FILES['file']['size']) / 1000);


Po co korzystać z funkcji filesize skoro możesz wykorzystać (i chyba powinieneś) tablicę $_FILES?

Poczytaj o $_FILES
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.