Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Upload
Forum PHP.pl > Forum > Przedszkole
dresik
Witam,
mam problem z napisaniem skryptu wysyłającego plik (fotke) na serwer z formularza (metoda POST) w dwa różne katalogi.
Przy czym żeby z drugiego pliku robiło miniaturke zdjęcia. Jesli ktoś wie jak to zrobić to prosiłbym o pomoc.
Cysiaczek
To może jeszcze pokażesz, co do tej pory zrobiłeś? Na gotowca nie licz
sobstel
a w czym dokładnie jest problem, gdzie się pojawia błąd, co nie działa?

poczytaj o move_uploaded_file" title="Zobacz w manualu PHP" target="_manual, copy" title="Zobacz w manualu PHP" target="_manual, imagecopyresampled" title="Zobacz w manualu PHP" target="_manual (zwróć uwagę na przykłady)

p.s. rzuć także okiem w sygnaturę Cysiaczka ;-)
dresik
napisałem skrypt który uploaduje plik na serwer i robi jego kompie w oddzielnym katalogu. ale niestety od kilku godzin nie moge poradzić sobie zeby ta kopia zdjęcia była pomniejszona na miniturke. jesli ktoś by był w stanie mi pomóc to bardzo prosze, ponieważ próbowałem kilka skryptów i nic nie wychodzi.

  1. <?php 
  2. $uploaddir = "../$foto$gkatalog";
  3. $uploaddir2 = "../$foto$gkatalog$mini";
  4.  
  5.  
  6. if($_FILES['plik1']['error'] == UPLOAD_ERR_OK){
  7. $new_name = $uploaddir.$_FILES['plik1']['name'];
  8. $temp_name = $_FILES['plik1']['tmp_name'];
  9. if(move_uploaded_file($temp_name, $new_name)){
  10. echo "Plik został załadowany.\n";
  11. }
  12. else{
  13. echo "Nieprawidłowy plik\n";
  14. }
  15. }
  16. else{
  17. echo("Wystąpił błąd: ");
  18. switch($_FILES['plik1']['error']){
  19. case UPLOAD_ERR_INI_SIZE :
  20. case UPLOAD_ERR_FORM_SIZE :
  21. echo("Przekroczony maksymalny rozmiar pliku!\n");
  22. break;
  23. case UPLOAD_ERR_PARTIAL :
  24. echo("Odebrano tylko częśc pliku!\n");
  25. break;
  26. case UPLOAD_ERR_NO_FILE :
  27. echo("Plik nie został pobrany!\n");
  28. break;
  29. default :
  30. echo("Nieznany typ błędu!\n");
  31. }
  32. }
  33.  
  34. // sciezka kopii zdjecia
  35. $todir = $uploaddir2.$_FILES['plik1']['name'];
  36.  
  37. // kopiowanie zdjecia
  38. copy ($new_name, $todir);
  39.  
  40. // zmiana rozdzielczosci
  41. $x = 130;
  42. $plik = $todir;
  43.  
  44. if($plik<>""){
  45. header ("Content-type: image/jpg");
  46. $zdj = imagecreatefromjpeg ("$plik");
  47. $zdjx = imagesx($zdj);
  48. $zdjy = imagesy($zdj);
  49. $y = ceil($zdjy*($x/$zdjx));
  50. $nowezdj - imagecreatetruecolor($x,$y);
  51. imagecopyresized($nowezdj,$zdj,0,0,0,0,$x,$y,$zdjx,$zdjy);
  52. imagejpeg($nowezdj,$todir, 80);
  53. }
  54.  
  55.  
  56.  
  57. echo ("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=admin.php?id=gallery_mod&mod=$mod\">");
  58.  
  59. ?>
Kicok
Nie można wysyłać na raz tekstu i zdjęcia.

wywal wszystkie echo z kodu i sprawdź czy zadziała.
dresik
nie pomogło
nowotny
Popraw sobie to co masz na poniższe:
  1. <?php
  2. if($plik<>""){
  3. $zdj = imagecreatefromjpeg ("$plik");
  4. $zdjx = imagesx($zdj);
  5. $zdjy = imagesy($zdj);
  6. $y = ceil($zdjy*($x/$zdjx));
  7. $nowezdj = imagecreatetruecolor($x,$y);
  8. imagecopyresized($nowezdj,$zdj,0,0,0,0,$x,$y,$zdjx,$zdjy);
  9. imagejpeg($nowezdj,$todir, 80);
  10. }
  11. ?>
dresik
i nic, dalej zdjęcie nie jest zmniejszane
nowotny
SOA#1...

pokaż co ci daje to:
  1. <?php
  2. echo $uploaddir."r\n";
  3. echo $uploaddir2."r\n";
  4. echo $plik."r\n";
  5. echo $todir."r\n";
  6. ?>
b_chmura
użyj tych dwóch funkcji:
  1. <?php
  2. function img_typ($name) 
  3. {
  4. $name = strtolower(substr($name, -4, 4));
  5.  
  6. if($name == '.jpg' OR $name == 'jpeg') {return ".jpg";}
  7. elseif($name == '.gif') {return ".gif";}
  8. elseif($name == '.png') {return ".png";}
  9. }
  10. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  11. function mini($in, $max_width, $max_height, $out, $jakosc) 
  12. {
  13. $typ = img_typ($in);
  14.  
  15. if ($typ == ".jpg") {$img_src = imagecreatefromjpeg($in);}
  16. elseif($typ == ".gif") {$img_src = imagecreatefromgif($in); }
  17. elseif($typ == ".png") {$img_src = imagecreatefrompng($in); }
  18.  
  19. $x = imagesx($img_src);
  20. $y = imagesy($img_src);
  21.  
  22. if($x > $y) 
  23. {
  24. $xr = ($x > $max_width)$max_width/$x : 1;
  25. $yr = $xr;
  26. }
  27. else 
  28. {
  29. $yr = ($y > $max_height)$max_height/$y : 1;
  30. $xr = $yr;
  31. }
  32.  
  33. $new_x = $x*$xr;
  34. $new_y = $y*$yr;
  35.  
  36. $new_img = imagecreatetruecolOR($new_x, $new_y);
  37. $background = imagecolORallocate($new_img, 255, 255, 255);
  38.  
  39. imagefill($new_img, 0, 0, $background);
  40. imagecopyresampled($new_img, $img_src, 0, 0, 0, 0, $new_x, $new_y, $x, $y);
  41.  
  42. if ($typ == ".jpg") {imagejpeg($new_img, $out, $jakosc);}
  43. elseif($typ == ".png") { imagepng($new_img, $out, $jakosc);}
  44. elseif($typ == ".gif") { imagegif($new_img, $out);  }
  45. }
  46. ?>


wywołanie:

  1. <?php
  2. mini($FileName, $MaxX, $MaxY, $NewFileName, $Quality);
  3. ?>
dresik
dzieki @b_chmura - wszystko chodzi ładnie i elegancko
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.