Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Upload obrazów na serwer
Forum PHP.pl > Forum > Przedszkole
Raven1122
Witam, napisałem takie coś:
  1. $uploaddir = "/upload/avatars/";
  2. $filename = trim($_FILES['awatar']['name']);
  3. $filename = substr($filename, -20);
  4. $filename = ereg_replace(" ", "", $filename);
  5. if((ereg(".jpg", $filename)) || (ereg(".gif", $filename))) {
  6. $uploadfile = $uploaddir . $filename;
  7. if(move_uploaded_file($_FILES['upfile']['tmp_name'], $uploadfile)) {
  8. chmod($uploadfile, 0644);
  9. echo("Zdjęcie zostało dodane do systemu!");
  10. } else {
  11. echo("Przekazywanie pliku nie powiodło się!");
  12. }
  13. } else {
  14. echo("Dozwolone są jedynie obrazki, przekazywanie nie powiodło się");
  15. }


Gdy wgrywam plik tlo.jpg to wtedy wyskakuje mi komunikat:
Dozwolone są jedynie obrazki, przekazywanie nie powiodło się

Dodam jeszcze ze folder docelowy ma nadane chmody 0777

Dlaczego tak się dzieje?
Pole w form jest nazwane awatar
Ruch Radzionków
bo może ci odczytywac jako np.
Kod
.JPG albo .JPEG
Monter08
a nie możesz zamiast bawić w sprawdzanie każdego formatu pokoleji użyć zmiennej $_FILES['awatar']['type']? możesz ją podzielić poprzez funkcje explode, i wtedy sprawdzać.
maniana
Do pobierania rozszerzenia plików wykorzystaj: pathinfo a do sprawdzenia czy plik naprawdę jest tym czym się podaje: exif_imagetype
Raven1122
czyli musze zrobic cos jak:

  1. $image = pathinfo($_FILES['awatar']['name']);
  2. if($image['extension'] == 'jpg' or 'gif'){
  3. //dalsza czesc skryptu
  4. }
  5. else{
  6. echo("Obrazek nie jest w formacie GIF lub JPG");
  7. }


tak?

Dobra, teraz mam takie cos:
  1. $uploaddir = "/upload/avatars/";
  2. $filename = trim($_FILES['awatar']['name']);
  3. $filename = substr($filename, -20);
  4. $filename = ereg_replace(" ", "", $filename);
  5. $image = pathinfo($_FILES['awatar']['name']);
  6. if($image['extension'] == 'jpg' or 'gif'){
  7. $uploadfile = $uploaddir . $filename;
  8. if(move_uploaded_file($_FILES['awatar']['tmp_name'], $uploadfile)) {
  9. chmod($uploadfile, 0644);
  10. print("Zdjęcie zostało dodane do systemu!");
  11. } else {
  12. print("Przekazywanie pliku nie powiodło się!");
  13. }
  14. } else {
  15. print("Dozwolone są jedynie obrazki, przekazywanie nie powiodło się");
  16. }


i zatrzymuje sie na przekazywanie pliku nie powiodlo sie, chmody sa 0777 dla upload i avatars, co jest zle tym razem?
maniana
  1. if($image['extension']=='jpg' or $image['extension']=='gif'){ ...
a jeśli or'ów będzie za dużo, lepiej tak:
  1. if(in_array($image['extension'],array('jpg', 'gif')){ ...
Czyli wyjdzie:
  1. $uploaddir = "/upload/avatars/";
  2. $image = pathinfo($_FILES['awatar']['name']);
  3. if(in_array($image['extension'],array('jpg', 'gif')){
  4. $uploadfile = $uploaddir . $image['basename'];
  5. if(move_uploaded_file($_FILES['awatar']['tmp_name'], $uploadfile)) {
  6. chmod($uploadfile, 0644);
  7. print("Zdjęcie zostało dodane do systemu!");
  8. } else {
  9. print("Przekazywanie pliku nie powiodło się!");
  10. }
  11. }else{
  12. print("Dozwolone są jedynie obrazki, przekazywanie nie powiodło się");
  13. }
Do skryptu możesz dodać jeszcze: is_uploaded_file
Raven1122
ale dalczego mi pokazuje ze przesylanie pliku sie nie powiodlo?

wlaczylem sobie wszystkie bledy i teraz mam takie cos:
Warning: move_uploaded_file(/upload/avatars/1.jpg): failed to open stream: No such file or directory in /home/jumpfm/domains/dancearena.pl/public_html/files/edytujawatar.php on line 8 Warning: move_uploaded_file(): Unable to move '/tmp/php6yjkWm' to '/upload/avatars/1.jpg' in /home/jumpfm/domains/dancearena.pl/public_html/files/edytujawatar.php on line 8

czy folderowi ze skryptem takze mam nadac chmody?
maniana
Sprawdz:
1. Zmienną uploaddir zmień na "upload/avatars/";
2. Sprawdź zawartość tablicy $_FILES['awatar']['error'] (zwraca kod błędu, jeśli zero to jeso OK)
3. Wyedytuj posta powyżej i usuń nazwę domeny (zastąp ją w ścieżkach np.: /domena.pl/)
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.