Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Upload obrazów na serwer
Raven1122
post
Post #1





Grupa: Zarejestrowani
Postów: 369
Pomógł: 2
Dołączył: 1.11.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował Raven1122 22.04.2012, 21:19:12
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #2





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


bo może ci odczytywac jako np.
Kod
.JPG albo .JPEG
Go to the top of the page
+Quote Post
Monter08
post
Post #3





Grupa: Zarejestrowani
Postów: 237
Pomógł: 22
Dołączył: 16.09.2010
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
maniana
post
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 18.05.2007

Ostrzeżenie: (0%)
-----


Do pobierania rozszerzenia plików wykorzystaj: pathinfo a do sprawdzenia czy plik naprawdę jest tym czym się podaje: exif_imagetype
Go to the top of the page
+Quote Post
Raven1122
post
Post #5





Grupa: Zarejestrowani
Postów: 369
Pomógł: 2
Dołączył: 1.11.2010

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Raven1122 23.04.2012, 13:21:40
Go to the top of the page
+Quote Post
maniana
post
Post #6





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 18.05.2007

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
Raven1122
post
Post #7





Grupa: Zarejestrowani
Postów: 369
Pomógł: 2
Dołączył: 1.11.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
maniana
post
Post #8





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 18.05.2007

Ostrzeżenie: (0%)
-----


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/)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.09.2025 - 10:24