Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z GD
mskiba
post 13.10.2013, 08:12:59
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 28.04.2013

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


Witam, napisalem skrypt do upload'u plikow na serwer, ktory jednoczesnie zmienia rozmiar pliku oraz dodaje do bazy nazwe pliku. Niby wszystko ok, ale bo pliko jest uload'owany na serwer, rozmiar tez jest zmienione, do bazy rowniez dodaje nazwe, tylko efekt koncowy, zamiast wyswietlic mi ten plik wyswietla blad jakby byla zla sciezka do pliku. Ponizej kod:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
  3. transitional.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  7. <title>Upload</title>
  8. </head>
  9. <body>
  10.  
  11. <div>
  12. <form enctype="multipart/form-data" method="POST">
  13. <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  14. <input name="plik" type="file" />
  15. <input type="submit" value="Wyślij plik" />
  16. </form>
  17. </div>
  18.  
  19. <?php
  20. $plik_tmp = $_FILES['plik']['tmp_name'];
  21. $plik_nazwa = $_FILES['plik']['name'];
  22. $plik_rozmiar = $_FILES['plik']['size'];
  23.  
  24. $info = pathinfo($plik_nazwa);
  25. $nazwa = $info['filename'];
  26. $rozszerzenie = $info['extension'];
  27.  
  28. if(is_uploaded_file($plik_tmp)) {
  29. move_uploaded_file($plik_tmp, "images/$plik_nazwa");
  30. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  31. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!<br />
  32. ";
  33. }
  34.  
  35. if ($rozszerzenie == 'jpg' || $rozszerzenie == 'JPG' || $rozszerzenie == 'jpeg' || $rozszerzenie == 'JPEG'){
  36. header("Content-type: image/jpeg");
  37. $image = imagecreatefromjpeg("images/$plik_nazwa");
  38. }
  39. elseif ($rozszerzenie == 'gif' || $rozszerzenie == 'GIF'){
  40. header("Content-type: image/gif");
  41. $image = imagecreatefromgif("images/$plik_nazwa");
  42. }
  43. elseif ($rozszerzenie == 'png' || $rozszerzenie == 'PNG'){
  44. header("Content-type: image/png");
  45. $image = imagecreatefrompng("images/$plik_nazwa");
  46. }
  47.  
  48. $size = getimagesize("images/$plik_nazwa");
  49. $new_width = 800;
  50. $new_height = $size[1] * $new_width/$size[0];
  51. $image_new = imagecreatetruecolor($new_width, $new_height);
  52. imagecopyresized($image_new, $image, 0, 0, 0, 0, $new_width, $new_height,$size[0], $size[1]);
  53.  
  54. if ($rozszerzenie == 'jpg' || $rozszerzenie == 'JPG' || $rozszerzenie == 'jpeg' || $rozszerzenie == 'JPEG'){
  55. imagejpeg($image_new,"images/$plik_nazwa",100);
  56. }
  57. elseif ($rozszerzenie == 'gif' || $rozszerzenie == 'GIF'){
  58. imagegif($image_new,"images/$plik_nazwa",100);
  59. }
  60. elseif ($rozszerzenie == 'png' || $rozszerzenie == 'PNG'){
  61. imagepng($image_new,"images/$plik_nazwa",100);
  62. }
  63.  
  64.  
  65.  
  66.  
  67.  
  68. $polaczenie = new mysqli('localhost', 'user', 'pass', 'db');
  69. $wynik = $polaczenie -> query("INSERT INTO gallery_files (id_file, filename) VALUES
  70. ('', '$plik_nazwa')") or die("QUERY ERROR: ".mysql_error());
  71. ?>
  72. </body>
  73. </html>
  74.  


Ten post edytował mskiba 13.10.2013, 08:14:50
Go to the top of the page
+Quote Post
pedro84
post 13.10.2013, 13:30:56
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Treść błędu to...? Spróbuj też podać ścieżkę absolutną do pliku.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
mskiba
post 13.10.2013, 14:04:05
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 28.04.2013

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


No właśnie widzisz, ani w logach ani na stronie żaden blad sie nie wyświetla. Ścieżka bezwzględna nic nie dała, jest to samo. A swoja droga to ktory fragment kodu odpowiada, za wyswietlenie obrazka po jego zapisaniu juz po resize?

  1. imagejpeg($image_new,"images/$plik_nazwa",100);


questionmark.gif Ten fragment zapisuje i wysyla do przegladarki? Czy po podaniu drugiego parametru tylko zapisuje?
Go to the top of the page
+Quote Post
pedro84
post 13.10.2013, 15:31:22
Post #4





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Ehh, ślepy jestem. Oczywiście, po podaniu drugiego parametru, tylko Ci zapisze.

BTW. A czemu nie IM tylko GD?

Ten post edytował pedro84 13.10.2013, 15:38:54


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
mskiba
post 13.10.2013, 15:53:48
Post #5





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 28.04.2013

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


Po prostu poszerzam horyzonty wink.gif Nie miałem wcześniej do czynienia z gd dlatego próbuje wink.gif Co dalej nie rozwiązuje mojego problemu wink.gif
Go to the top of the page
+Quote Post
pedro84
post 13.10.2013, 15:59:53
Post #6





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


No jeśli chcesz wyświetlić plik, to imagejpeg($image) bez drugiego argumentu i analogicznie.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
com
post 13.10.2013, 16:08:09
Post #7





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


http://php.net/manual/en/function.imagejpeg.php 3 parametr określa jakość, drugi zapisuje do pliku, pierwszy wyświetla na ekran ale nie użyjesz obu naraz w jednej funkcji, możesz albo zapisać albo wyświetlić na ekranie zresztą pisze to w manualu wink.gif
Cytat
// outputting to the browser
// header() needed for browser
header('Content-Type: image/jpeg')
imagejpeg($im);

// saving to a file
// you do not need a header() function to save to a file
imagejpeg($im, "../images/image001.jpg");

// outputting to the browser including quality parameter.
// skipping parameter2 to output to browser
header('Content-Type: image/jpeg');
imagejpeg($im, null, 90);

// saving to a file including quality parameter.
// all parameters used for saving to a file with quality adjustment
imagejpeg($im, "../images/image001.jpg", 90);


poza tym ten if prosiłby się o zamianę na jakiegoś switch case smile.gif pomijając fakt ze robisz sobie lekki bałagan tworząc kilka razy tego samego ifa
Go to the top of the page
+Quote Post
mskiba
post 13.10.2013, 16:24:45
Post #8





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 28.04.2013

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


Właśnie o to chodzi, ze ja nie chce wyswietlac tego obrazka. Spróbuj wgrać jakiś plik i zobacz efekt końcowy.


http://185.5.99.71/gallery/upload.php


Ten post edytował mskiba 13.10.2013, 16:25:14
Go to the top of the page
+Quote Post
com
post 13.10.2013, 16:31:01
Post #9





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


nie możesz ustawiać nagłówka header("Content-type: image/jpeg"); jeśli nie wyświetlasz na ekranie pliku zobacz mój cytat tam nie ma header("Content-type: image/jpeg");

bo teraz upload.php traktuje jak obrazek a przecież on nie ma być obrazkiem tylko dalej plikiem php wink.gif

Ten post edytował com 13.10.2013, 16:36:25
Go to the top of the page
+Quote Post
mskiba
post 13.10.2013, 16:45:33
Post #10





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 28.04.2013

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


Właśnie o to mi chodziło, wywaliłem te naglowki idziala jak natura chciała wink.gif Dziękuje wink.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:01