Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: is_uploaded_file Nie dziala
Forum PHP.pl > Forum > PHP
boras87
Witam

Potrzebuje w jakikolwiek sposób pobierać zdjęcia od użytkowników do pliku czy do bazy jest to obojętne.

Niestety funkcja
nie działa.

  1. $plik_tmp = $_FILES['plik']['tmp_name']; // Tymczasowa nazwa uploadowanego pliku
  2. $plik_nazwa = $_FILES['plik']['name']; // Orginalna nazwa pliku uploadowanego przez uzytkownika
  3. $plik_rozmiar = $_FILES['plik']['size']; // Rozmiar pliku w Byte'ach
  4. $rozmiar = $plik_rozmiar / 1000; // A tu zrobimy z nich kB
  5. $is_obrazek = explode('.', $plik_nazwa); // dzielimy nazwe uploadowanego pliku na tablice
  6. $is_obrazek[1] = strtolower($is_obrazek[1]); // zmniejszamy nazwe rozszerzenia
  7.  
  8. if (($is_obrazek[1] == 'jpg') || ($is_obrazek[1] == 'jpeg') || ($is_obrazek[1] == 'gif')) { // sprawdzamy poprawnosc pliku
  9. echo "Obrazek ma zakończenie jpeg,jpg lub gif";
  10. if ($plik_tmp == null) {
  11. echo "plik tmp jest pusty";
  12. }
  13. if (is_uploaded_file($plik_tmp)) {
  14. // Jesli plik zostal poprawnie zuploadowany
  15. move_uploaded_file($plik_tmp, "upload/$plik_nazwa"); // Przenosimy
  16. echo "Plik: $plik_nazwa o rozmiarze
  17. $rozmiar kB zosta� przes�any na serwer!"; // Pokaz dane o pliku
  18. } else {
  19. if ($plik_nazwa == null) { // Jesli plik jest pusty
  20. echo "Plik jest pusty";
  21. return 0;
  22. } else { // Jesli format jest zly
  23. echo 'Nie poprawny format pliku!';
  24. }
  25. }
  26. }


Mam stronkę postawioną na serwerze az.pl czy jest możliwość aby blokowała tą funkcje (miałem podobny problem z serwerem friko.pl on blokował funkcje mail)?

Skrypt powinien być okej bo został pobrany ze strony http://funkcje.net/view/5/14/1852/

albo czy idzie zrobić to jakoś na około?

Potrzebuje ten moduł skończyć najpóźniej na dziś.... sad.gif

Bardzo was proszę o pomoc.

Z góry dzięki.
R4D3K
Tak na szybko :
1.) Spradz co przechowuje zmienna:
  1. var_dump($_FILES['plik]);
  2. print_r($_FILES['plik']);


2.) Sprawdz czy input ma przypisany name:
  1. <input type="file" name="plik" />
boras87
  1. array(5) { ["name"]=> string(8) "kill.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(2) ["size"]=> int(0) } Array ( [name] => kill.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) ?>

Mówi Ci to coś?

W formularzu jest wszystko okej.

Dzięki nawet za szybką pomoc smile.gif

Tu zresztą jest calutki kod (tylko bez śmiechów prosze):
  1. <?php
  2. require_once('view.class.php');
  3. $cview = new view();
  4. $cview->naglowek('Wymien sie');
  5. ?>
  6. <form enctype="multipart/form-data" action="test1.php" method="POST">
  7. <input type="hidden" name="MAX_FILE_SIZE" value="5000" />
  8. <input name="plik" type="file" />
  9. <input type="submit" value="Wyslij plik" />
  10. </form>
  11.  
  12.  
  13. <?php
  14.  
  15.  
  16. $plik_tmp = $_FILES['plik']['tmp_name']; // Tymczasowa nazwa uploadowanego pliku
  17. $plik_nazwa = $_FILES['plik']['name']; // Orginalna nazwa pliku uploadowanego przez uzytkownika
  18. $plik_rozmiar = $_FILES['plik']['size']; // Rozmiar pliku w Byte'ach
  19. $rozmiar = $plik_rozmiar / 1000; // A tu zrobimy z nich kB
  20. $is_obrazek = explode('.', $plik_nazwa); // dzielimy nazwe uploadowanego pliku na tablice
  21. $is_obrazek[1] = strtolower($is_obrazek[1]); // zmniejszamy nazwe rozszerzenia
  22.  
  23. if (($is_obrazek[1] == 'jpg')||($is_obrazek[1] == 'jpeg')||($is_obrazek[1] == 'gif')){ // sprawdzamy poprawnosc pliku
  24.  
  25. if(is_uploaded_file($plik_tmp)) { // Jesli plik zostal poprawnie zuploadowany
  26. move_uploaded_file($plik_tmp, "$plik_nazwa"); // Przenosimy
  27. echo "Plik: $plik_nazwa o rozmiarze
  28. $rozmiar kB zosta� przes�any na serwer!"; // Pokaz dane o pliku
  29. }
  30.  
  31. else {
  32.  
  33. var_dump($_FILES['plik']);
  34.  
  35. print_r($_FILES['plik']);
  36. }
  37. } else {
  38. if ($plik_nazwa == NULL) { // Jesli plik jest pusty
  39. return 0;
  40. } else { // Jesli format jest zly
  41. echo 'Nie poprawny format pliku!';
  42. }
  43. }
  44.  
  45. $cview->stopka();
  46. ?>


kreciko
Może nie masz dostępu do katalogu /tmp (prawa dostępu, albo brak katalogu).
boras87
Mam dostęp i to nawet zdalny tzn mam widoczny serwer jako dysk tyle że jest tam mnóstwo folderów (nie wiem po co komu tongue.gif) w tym tmp. Ja operuje tylko w katalogu www, może tu leży problem?

Przyznam też bez bicia, że próbowałem usunąć te katalogi, a potem wrzucałem je z powrotem... Może tu popełniam karygodny błąd?

Z góry dzięki i pozdrawiam.
kiler129
Katalog /tmp/ zazwyczaj znajduje się w ramie i po reboocie jest kasowany, jednakże nie zaleca się modyfikowania danych znajdujących się w nim - może to powodować destabilizację całego systemu.
Jeśli chodzi o problem - jak widzisz w tablicy pole error ma wartość 2: http://www.php.net/manual/en/features.file-upload.errors.php
boras87
Tzn o ile dobrze czytam to plik jest za duży?

Czy gdzieś się to ustawia?

Po za zwykłym kodowaniem jestem zielony sad.gif help...
kreciko
w php.ini:

; Maximum size of POST data that PHP will accept.
; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
post_max_size =8M

; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#...ad-max-filesize
upload_max_filesize = 40M


boras87
Ale chyba na zewnętrznych serwerach nie mam dostępu do php.ini?

Czy też mają taką funkcje ?

kiler129
Drapiecie się przez ścianę ;]
Komunikat mówi o polu wysyłanym postem a nie ograniczniu php.ini:

Cytat
UPLOAD_ERR_FORM_SIZE
Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.


Dodaj ukryte pole do fomularza o nazwie MAX_FILE_SIZE i wartości max w bajtach.
boras87
array(5) { ["name"]=> string(8) "kill.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) } Array ( [name] => kill.jpg [type] => [tmp_name] => [error] => 1 [size] => 0 )

Chyba za szybko podziękowałem.

Udało się wstawić dwa pliki, a potem już nie mogłem.

Teraz error ma wartość 1

UPLOAD_ERR_INI_SIZE

Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.

Czyli tym razem już php.ini??

Tylko czemu chciałem po raz 3 wstawić ten sam plik więc wielkość identyczna sad.gif

kiler129
Cytat(boras87 @ 22.09.2010, 21:22:49 ) *
array(5) { ["name"]=> string(8) "kill.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) } Array ( [name] => kill.jpg [type] => [tmp_name] => [error] => 1 [size] => 0 )

Chyba za szybko podziękowałem.

Udało się wstawić dwa pliki, a potem już nie mogłem.

Teraz error ma wartość 1

UPLOAD_ERR_INI_SIZE

Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.

Czyli tym razem już php.ini??

Tylko czemu chciałem po raz 3 wstawić ten sam plik więc wielkość identyczna sad.gif


Jakiego serwera używasz i czy masz miejsce na dysku i w katalogu /tmp/ ?
Bo to dziwnie wygląda troche skoro to ten sam plik blinksmiley.gif
R4D3K
Jeśli coś zapisujesz to musi być chmod odpowiedni ustawiony, który pozwala skryptowi php na zapisywanie w tym folderze.
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.