Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Formularz do upload'u, raz dziala raz nie
Polik
post 13.07.2007, 12:05:59
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 11.12.2003

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


Witam!

W koncu po dlugich poszukiwaniach w necie, i godzinami spedzonymi prze monitorem udalo mi sie stworzyc skrypt do uploadu obrazkow. Testowalem go na dwoch serwerach. Na jednym dziala na drugim nie. Jak sie okazalo problem jest w formularzu z inputem od nazwy pliku docelowego. Nie przesyla nazwy pliku przez co obrazek nie ma nazwy i sie nie zapisuje. Tak wyglada formularz:

  1. <form enctype="multipart/form-data" action="load01.php" method="POST">
  2. <input name="uploadfile" type="file" />
  3. <input name="nazwa" type="text" />
  4. <input type="submit" value="Wyślij plik" />
  5. </form>


Domyslam sie, ze problem mozy byc z tego powodu "multipart/form-data", ze jest to formularz do przesylania danych nie textow. Ale dlaczego na jednym serwerze dziala a na drugim juz nie?

Wiecie w jaki sposob przeslac i obrazek i teksty?
Pozdrawiam i z gory dziekuje za pomoc!
Go to the top of the page
+Quote Post
tommy4
post 13.07.2007, 12:25:31
Post #2





Grupa: Zarejestrowani
Postów: 288
Pomógł: 12
Dołączył: 2.12.2005

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


może po prostu jeden serwer pozwala na przesyłanie plików, bądź ma większy limit. A czym sprawdzasz, że uploadował się plik?
Go to the top of the page
+Quote Post
Polik
post 14.07.2007, 10:11:14
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 11.12.2003

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


pliki wgrywaja sie na serwer w obu przypadkach (np. jak podam nazwy tych plikow w skrypcie). tylko w jednym z nich w formularzu nie przechodzi zawartosc inputa z textem a w drugim idzie bez problemu.
Go to the top of the page
+Quote Post
Athlan
post 14.07.2007, 10:27:51
Post #4





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Cytat
ze jest to formularz do przesylania danych nie textow

bzdura... dane nadal przesyłają się metodą post smile.gif
Cytat
tylko w jednym z nich w formularzu nie przechodzi zawartosc inputa z textem a w drugim idzie bez problemu.

Pokaż kod na phpfi.com lub cpaste.com, spróbujemy coś poradzić smile.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Polik
post 16.07.2007, 12:53:01
Post #5





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 11.12.2003

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


Formularz:

  1. <form enctype="multipart/form-data" action="load01.php" method="POST">
  2. <input name="uploadfile" type="file" />
  3. <input name="nazwa" type="text" />
  4. <input type="submit" value="Wyślij plik" />


Kod uploadera:

  1. <?php
  2. header('Content-type: image/jpeg'); 
  3.  
  4. echo $nazwa;
  5.  
  6. $nowa_nazwa = "".$nazwa.".jpg";
  7. $nowa_nazwas = "".$nazwa."s.jpg";
  8.  
  9. if (!is_uploaded_file($_FILES['uploadfile']['tmp_name']))
  10. {
  11. //error: gdyby nie podano zadnego pliku do uploadu
  12. $error = "Nie podales zadnego pliku!";
  13. unlink($_FILES['uploadfile']['tmp_name']);
  14. }
  15. else
  16. {
  17. //plik zostal upload''owany
  18. $maxfilesize=300000;
  19.  
  20. if ($_FILES['uploadfile']['size'] > $maxfilesize)
  21. {
  22. //error: gdyby plik byl za duzy (3MB)
  23. $error = "Plik za duzo zajmuje!";
  24. unlink($_FILES['uploadfile']['tmp_name']);
  25. }
  26. else
  27. {
  28. //gdyby plik byl za duzy pomniejszamy go i robimy miniaturke
  29. list($width, $height) = getimagesize($filename);
  30. if($width > 700 || $height > 900)
  31. {
  32. //skalujemy duzy obrazek
  33. scaling($_FILES['uploadfile']['tmp_name'], $nowa_nazwa, 640, 100);
  34.  
  35. //robimy miniaturke
  36. scaling($_FILES['uploadfile']['tmp_name'], $nowa_nazwas, 100, 50);
  37. }
  38. else
  39. {
  40. //plik spelnia warunki wielkosci wiec go wgrywamy na serwer
  41. $pliczek = $_FILES['uploadfile']['tmp_name'];
  42. copy($pliczek,$nowa_nazwa);
  43.  
  44. //robimy miniaturke  
  45. scaling($pliczek, $nowa_nazwas, 100, 50);
  46. print "Plik zostal wgrany prawidlowo!";
  47. } 
  48. }
  49. }
  50.  
  51. //pozbywamy sie uchwytu
  52. unlink($_FILES['uploadfile']['tmp_name']);
  53.  
  54. //funkcjia do skalowania, przyjmuje uchwyt do pliku, nazwe do pliku i szerokosc zd
    jecia
  55. function scaling($filename , $nazwa, $rozmiar, $jakosc) 
  56. {
  57. //tworzy nowy obrazek zeby mozna bylo skalowac
  58. $image = imagecreatefromjpeg($filename);
  59.  
  60. //pobieramy gabaryty oryginalnego zdjecia
  61. list($width, $height) = getimagesize($filename);
  62.  
  63. //ustawiamy nowe parametry szerokosci i wysokosci
  64. $nowa_height = ($height/$width)*$rozmiar;
  65.  
  66. $new_width = $rozmiar;
  67. $new_height = $nowa_height;
  68.  
  69. //tworzymy nowy obrazek
  70. $image_p = imagecreatetruecolor($new_width, $new_height);
  71.  
  72. //funkcja ktora pod nowy obrazek wstawia ten stary tylko ze zeskalowany
  73. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  74.  
  75. //zapisanie nowego pliku o okreslonej nazwie i jakosci
  76. imagejpeg($image_p, $nazwa, $jakosc);
  77.  
  78. //zniszczenie niepotrzebnych zmiennych
  79. imagedestroy($image_p);
  80. imagedestroy($image);
  81. }
  82. ?>


smile.gif
Go to the top of the page
+Quote Post
phpion
post 16.07.2007, 16:08:57
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie $nazwa a $_POST['nazwa']
Problem tkwi w tym, że jeden serwer ma włączone register_globals (ten, na którym skrypt działa), a ten drugi nie.
Najszybciej poprawisz to robiąc:
  1. <?php
  2. $nazwa = $_POST['nazwa'];
  3. ?>


Ten post edytował phpion.com 16.07.2007, 16:10:02
Go to the top of the page
+Quote Post
Polik
post 17.07.2007, 10:27:22
Post #7





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 11.12.2003

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


heh no rzeczywiscie teraz dziala tu i tu smile.gif

jezeli mozna to chcialbym zapytac jeszcze o jedna rzecz. kiedy skrpyt zaladuje juz obrazki na serwer w firefoxie pojawia sie komunikat "Obrazek "http://polik.ovh.org/arch/load01.php" nie może zostać wyświetlony, ponieważ zawiera błędy." w IE tego nie ma. Nie wiem skad ten komunikat sie bierze przeciez uzywajac imagejpeg zapisuje obraz do pliku nie wyswietlam w przegladarce
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: 31.07.2025 - 04:14