Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wyslaniem zdjecia do 2 katalogow
Forum PHP.pl > Forum > PHP
byczek1984
Witam
Problem pojawia sie z wyslaniem zdjecia w tym samym czasie do 2 katalogow. Pokaze przyklad , wybieram zdjecie z dysku i chce zeby dodalo mi raz do katalogu picture/big/Poland (katalog z rzeczywista rozdzielczoscia zdjecia) natomiast 2 katalog picture/small/Poland (katalog ze zmienniona rozdzielczoscia zdjecia). Poniezej znajduje sie kod:
  1. $folder="picture/big/$category/"; //rzeczywisty rozmiar
  2. $folder_s="picture/small/$category/"; //pomniejszony rozmiar
  3. $tmp=$_FILES['plik']['tmp_name']; //chwilowa nazwa pliku
  4. $filename=$_FILES['plik']['name']; //nazwa pliku
  5.  
  6. $ext=substr(strrchr($filename, '.'),1);
  7.  
  8. $uploadfile_b=$folder.$filename; //sciezka rzeczywistych zdjec
  9. $uploadfile=$folder_s.$filename; //sciezka ze zmiejszonym zdjeciem
  10.  
  11. IF(isset($_FILES['plik']))
  12. {
  13. IF(is_uploaded_file($tmp))
  14. {
  15. IF($ext=='jpg' || $ext=='gif' || $ext=='jpeg')
  16. {
  17. IF(move_uploaded_file($tmp, $uploadfile))
  18. {
  19. chmod($uploadfile, 0777);
  20.  
  21. print "Zdjecie $filename zostało dodane do albumu $category";
  22.  
  23. $new_link=$uploadfile; //sciezka do zdjecia ktore bedzie mial pomniejszona rozdzielczosc
  24.  
  25. $mysql_confirm = base_connect();
  26. $query=mysql_query("SELECT picture from photo where category='$category'");
  27. $row=mysql_fetch_row($query);
  28.  
  29. $new_photo="$row[0]$filename";
  30.  
  31. $query = "UPDATE photo SET picture='$new_photo|' WHERE category='$category';";
  32. mysql_query($query);
  33. #####################zmienia rozdzielczosc obrazka############
  34. //kod z zmiejszona rozdzielczoscia obrazka
  35. ############################################################################
  36. }
  37.  
  38. else
  39. print "Przekazywanie pliku nie powiodło się";
  40. }
  41.  
  42. else
  43. print "Dozwolone sa jedynie obrazki";
  44. }
  45. else
  46. print "nie ma pliku";
  47. }
  48.  
  49. }
  50. ######################################
  51. ?>
Zyx
Fajnie, że nie napisałeś, JAKI jest ten problem i że wyciąłeś chyba najbardziej kluczową część tego kodu...
byczek1984
Problem jest taki , ze nie wiem jak utworzyc katalog picture/big/Poland (z rzeczywistym rozmiarem zdjecia) a fragment ktory nie dalem dziala mi - jego zadaniem bylo zmiennienie rozdzielczosci na mniejsza , ale moge podac ten kod jesli bedzie to komus w stanie pomoc.
Kod poprzedni tworzy mi tylko katalog picture/big/Poland natomiast nie wiem jak utworzyc katalog z rzeczywista rozdzielczoscia?
  1. #####################zmienia rozdzielczosc obrazka############
  2. $src=imagecreatefromjpeg($new_link);
  3. $size=@getimagesize($file);
  4. $max_width='150px'; //maks szerokosc
  5. $max_height='100px'; //maks wysokosc obraska
  6.  
  7. $x=ImageSX($src); // szerokosc obrazka ladowanego
  8. $y=ImageSY($src); //wysokosc obrazka ladowanego
  9.  
  10. $ratio_org=$x/$y;
  11. IF($max_width/$max_height>$ratio_org)
  12. {
  13. $max_width=$max_height*$ratio_org;
  14. }
  15. else
  16. {
  17. $max_height=$max_width/$ratio_org;
  18. }
  19. $color=imagecreatetruecolor($max_width, $max_height);
  20. imagecopyresampled($color, $src, 0, 0, 0, 0, $max_width, $max_height, $x, $y);
  21.  
  22. imagejpeg($color, "$new_link", 100);
  23. ############################################################################
thelaguna
Katalogi tworzy się przez mkdir jeśli o to Ci chodzi.
byczek1984
Chodzi mi o dodanie zdjecia do istniejacych juz 2 katalogow : picture/small/Poland/ i picture/big/Poland/ . Do 1 katalogu wiem jak dodac ale nie wiem co zrobic zeby dodawal do obydwoch:>:>
thelaguna
No kilka możliwości masz, np.
1. Najpierw dodaj wrzucony obrazek do picture/big/Poland/ a później wykorzystaj go do zrobienia miniatury w picture/small/Poland/
2. Zaraz przed/po funkcji move_uploaded_file użyj copy do skopiowania dużego obrazka do właściwego katalogu.
krowal
No to jeśli potrafisz zapisać do jednego to czemu nie zrobisz tego samego dla drugiej ścieżki...
  1. imagejpeg($src, $folder, 100);
  2. imagejpeg($color, $folder_s, 100);

Poza tym po co pisać pojedyncze zmienne w cudzysłowach tj. "$zmienna" ? Wczoraj pisałem to samo w innym temacie... to jakaś plaga ? smile.gif
byczek1984
To czyli jak uzyje copy() , to moze to wygladac tak:
  1. .....
  2. IF(move_uploaded_file($tmp, $uploadfile))
  3. {
  4. chmod($uploadfile, 0777);
  5. copy($filename, $folder) //czy cos takiego, poniewaz chyba zeby skopiowac TO zdjecie do tego '$folder' musi istniec juz wczesniej ten folder
  6. //a ON nie istnieje, tylko istnieje $uploadfile -czyli folder z malymi zdjeciami
  7.  
  8. }
  9. ......

Probowalem rowniez zeby dac tak:
  1. IF(move_uploaded_file($tmp, $uploadfile) && move_uploaded_file($tmp, $uploadfile_b) //ale wyskauje blad
  2. {
  3. chmod($uploadfile, 0777);
  4. chmod($uploadfile_b, 0777);
  5. }
  6.  

thelaguna
Najprostszy sposób podał Ci krowal.

Jak już chcesz to copy to daj jeszcze jedno sprawdzenie czy folder istnieje, jeśli nie to niech go utworzy.
W każdym bądź razie ten Twój sposób nie jest optymalny.
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.