Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wysyłanie pliku na serwer
Forum PHP.pl > Forum > Przedszkole
DerekDX
Witam,
mam problem z skryptem wysyłającym plik na serwer a raczej z czescią która nim manipuluje oto on

  1. if ($_FILES['miniaturka']['error'] > 0)
  2. {
  3. echo 'Problem: ';
  4. switch ($_FILES['miniaturka']['error'])
  5. {
  6. case 1: echo 'Rozmiar pliku przekroczył wartość upload_max_filesize'; break;
  7. case 2: echo 'Rozmiar pliku przekroczył wartość max_file_size'; break;
  8. case 3: echo 'Plik wysłany tylko częściowo'; break;
  9. case 4: echo 'Nie wysłano żadnego pliku'; break;
  10. case 6: echo 'Nie można wysłać pliku: Nie wskazano katalogu tymczasowego.'; break;
  11. case 7: echo 'Wysłane pliku nie powiodło się: Nie zapisano pliku na dysku.'; break;
  12. }
  13. }
  14.  
  15. // czy plik ma prawidłowy typ MIME?
  16.  
  17. if ($_FILES['miniaturka']['type'] != 'image/gif')
  18. {
  19. echo 'Problem: plik nie jest obrazkiem';
  20. }
  21. .
  22. .
  23. .
  24. .
  25. .
  26. .
  27. .
  28. .
  29. .
  30.  
  31. mkdir("../galeria/$id", 0777);
  32. // umieszczenie pliku w pożądanej lokalizacji
  33. $lokalizacja='/galeria/$id/'.$_FILES['miniaturka']['name'];
  34. if (is_uploaded_file($_FILES['miniaturka']['tmp_name']))
  35. {
  36. if (move_uploaded_file($_FILES['miniaturka']['tmp_name'], $lokalizacja))
  37. {
  38.  
  39. }
  40. else
  41. {
  42. echo 'Problem: Plik nie może być skopiowany do katalogu';
  43. exit;
  44. }
  45. }
  46. else
  47. {
  48. echo 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: ';
  49. echo $_FILES['miniaturka']['name'];
  50. }


jeżeli chodzi o drzewo katalogow to wyglada ono nastepujaca zaczynajac od katalogu glownego serwer:

/
-1
-administracja-tu znajduje sie skrypt (umieszczony wyżej) odpowiadajacy manipulowanie przesłanymi plikami
-galeria
-1-w tym katalogu tworzone sa foldery ktorych nazwami sa ID
-1
-2
-3
-4- tu powinienen przeslany zostac plik

mam nadzieje ze wystarczajaca przejzyscie to przedstawilem
Daiquiri
OK, ale czy skrypt ma problem z wysłaniem pliku czy przeniesieniem go? Sprawdź może jaki chmod ma tworzony plik.
DerekDX
wlasciwie to trudno stwierdzic. W moim podreczniku do php jest napisane ze plik ktory sie wysyla zostaje wyslany i zapisany w domyslnym katalogu tymczasowym jezeli nic sie z nim nie zrobi (zmieni nazwe,przeniesie) do konca skryptu zostaje on usuniety
Daiquiri
A katalog, który tworzysz ma faktycznie chmod 777? Czy jakikolwiek z warunków zwraca Ci błąd?

Ha!
  1. $lokalizacja='/galeria/$id/'.$_FILES['miniaturka']['name'];
  2. //chyba raczej:
  3. $lokalizacja='galeria/'.$id.'/'.$_FILES['miniaturka']['name'];

Zmienna nie jest interpretowana w ''.
DerekDX
faktycznie katalog tworzony przez ten skrypt nie ma uprawnien 777 tylko 755 ale nie wiem dlaczego przeciez funkcja jest napisana poprawnie

Calość nie generuje zadnego błędu
CuteOne
mkdir("../galeria/$id", 0777);
podmien na
mkdir("galeria/$id", 0777);

$lokalizacja='/galeria/$id/'.$_FILES['miniaturka']['name'];
podmien na
$lokalizacja="galeria/$id/".$_FILES['miniaturka']['name']; //pamiętaj jeżeli wpisujesz zmienną to tylko z " nigdy z ' smile.gif
Daiquiri
Cytat(DerekDX @ 12.11.2010, 17:09:27 ) *
faktycznie katalog tworzony przez ten skrypt nie ma uprawnien 777 tylko 755
Wyzeruj umask()
DerekDX
niestety zaden ze sposobów podanych wyżej nie działa skrypt teraz wyglada tak:
  1. require("adm_konfiguracja.php");
  2. if ($_FILES['miniaturka']['error'] > 0)
  3. {
  4. echo 'Problem: ';
  5. switch ($_FILES['miniaturka']['error'])
  6. {
  7. case 1: echo 'Rozmiar pliku przekroczył wartość upload_max_filesize'; break;
  8. case 2: echo 'Rozmiar pliku przekroczył wartość max_file_size'; break;
  9. case 3: echo 'Plik wysłany tylko częściowo'; break;
  10. case 4: echo 'Nie wysłano żadnego pliku'; break;
  11. case 6: echo 'Nie można wysłać pliku: Nie wskazano katalogu tymczasowego.'; break;
  12. case 7: echo 'Wysłane pliku nie powiodło się: Nie zapisano pliku na dysku.'; break;
  13. }
  14. }
  15.  
  16. // czy plik ma prawidłowy typ MIME?
  17.  
  18. if ($_FILES['miniaturka']['type'] != 'image/gif')
  19. {
  20. echo 'Problem: plik nie jest obrazkiem';
  21. }.
  22. .
  23. .
  24. .
  25. .
  26. .
  27. .
  28. .
  29. .
  30. mkdir("../galeria/modelki/$id", 0777);
  31. // umieszczenie pliku w pożądanej lokalizacji
  32. $lokalizacja="/galeria/modelki/$id/".$_FILES['miniaturka']['name'];
  33. if (is_uploaded_file($_FILES['miniaturka']['tmp_name']))
  34. {
  35. if (move_uploaded_file($_FILES['miniaturka']['tmp_name'], ../$lokalizacja))
  36. {
  37.  
  38. }
  39. else
  40. {
  41. echo 'Problem: Plik nie może być skopiowany do katalogu';
  42. exit;
  43. }
  44. }
  45. else
  46. {
  47. echo 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: ';
  48. echo $_FILES['miniaturka']['name'];
  49. }


Niewiem moze jest pboblem z sciazkami do katalogow
  1. /katalog_glowny
  2. /1
  3. /administracja
  4. dodaj.php-skrypt ktory jest zamieszczony wyzej
  5. /galeria
  6. /modelki
  7. /1-katalogi ktore generuje skrypt
  8. /2
  9. /3
  10. plik.gif-plik powinien byc przeniesiony w to miejsce
CuteOne
na początku skryptu wstaw
error_reporting(E_ALL | E_STRICT);

edit:
if (move_uploaded_file($_FILES['miniaturka']['tmp_name'], ../$lokalizacja))

if (move_uploaded_file($_FILES['miniaturka']['tmp_name'], '../'.$lokalizacja))
DerekDX
Niestety nadal nie dziala teraz jest tak:
  1. $staryumask = umask(0);
  2. mkdir("../galeria/modelki/$id", 0777);
  3. umask($staryumask);
  4. // umieszczenie pliku w pożądanej lokalizacji
  5. $lokalizacja="/galeria/modelki/$id/".$_FILES['miniaturka']['name'];
  6. if (is_uploaded_file($_FILES['miniaturka']['tmp_name']))
  7. {
  8. if (move_uploaded_file($_FILES['miniaturka']['tmp_name'], '../'.$lokalizacja))
  9. {
  10.  
  11. }
  12. else
  13. {
  14. echo 'Problem: Plik nie może być skopiowany do katalogu';
  15. exit;
  16. }
  17. }
  18. else
  19. {
  20. echo 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: ';
  21. echo $_FILES['miniaturka']['name'];
  22. }


umask jest wyzerowany i nadal tworzy katalogi o chmod 755 i przy wykonywaniu skryptu tworzy sie plik $lokalizacja w katalog_glowny/1 który po otworzeniu w notatniku wyswietla "kod" obrazka
Daiquiri
Czyli tworzy Ci katalog w katalog_glowny/1/galeria/modelki/$id/ i przenosi do niego plik?
DerekDX
tworzy mi katalog o chmod 755 i w katalogu katalog_glowny/1 tworzy sie plik bez rozszezenia o nazwie $lokalizacja a w nim zawarty jest obrazek w formir tekstowej tak jak by otworzyc obrazek w notatniku

w ksiązce do php mam napisane ze jezeli sa jakies problemy z wysylaniem plikow nalezy znalesc plik php.ini i tam ustalic wartosc upload_tmp_dir ale gdzie go mozna znalesc? serwer hostuje nazwa.pl
Daiquiri
Naknociłeś ze zmiennymi, wyświetl sobie np. $_FILES['miniaturka']['name'];
DerekDX
watrosc zmiennej $_FILES['miniaturka']['name']; to nazwa pliku ktory uploaduje i to sie mi wyswietla
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.