Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Upload zdjęc, nie dodaje jpg jpeg, czy to problem z imagecreatefromjpeg?
daruzagi
post 15.03.2010, 21:31:58
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 25.02.2010

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


Witam wszystkich

Mam następujący problem, skrypt do dodawania zdjęć na serwer. Jednak nie dodaje on zdjęć w rozszerzeniu *.jpg *.jpeg

Robię wszystko na przykładzie takiego kodu:

formularz.html

  1. <form action="index.php" method="post" enctype="multipart/form-data">
  2. <p><input type="file" name="upload_image[]" /></p>
  3. <p><input type="file" name="upload_image[]" /></p>
  4. <p><input type="file" name="upload_image[]" /></p>
  5. <p><input type="submit" name="upload_submit" value="Wyślij!" /></p>
  6. </form>


index.php

  1.  
  2. <? php
  3.  
  4. function generateThumbnail($filename, $extension)
  5. {
  6. global $config;
  7. // sprawdzenie, czy plik o podanej nazwie już nie istnieje
  8. if ( file_exists($config['path_thumbnails'] . $filename) )
  9. {
  10. unlink($config['path_thumbnails'] . $filename); // usunięcie miniatury
  11. }
  12. // stworzenie nowej grafiki wg typu
  13. switch ( $extension )
  14. {
  15. case 'gif':
  16. $ic = imagecreatefromgif($config['path_images'] . $filename);
  17. break;
  18. case 'png':
  19. $ic = imagecreatefrompng($config['path_images'] . $filename);
  20. break;
  21. default:
  22. $ic = imagecreatefromjpeg($config['path_images'] . $filename);
  23. break;
  24. }
  25. if ( $ic === false )
  26. {
  27. return 'Miniaturka nie stworzona!';
  28. }
  29. $is = getimagesize($config['path_images'] . $filename); // [0] - szerokość, [1] - wysokość
  30. switch ( $config['thumbnail_scale'] )
  31. {
  32. case false: // zmniejszanie bezpośrednio do 180x160px
  33. $nts = imagecreatetruecolor($config['thumbnail_width'], $config['thumbnail_height']);
  34. imagecopyresized($nts, $ic, 0, 0, 0, 0, $config['thumbnail_width'], $config['thumbnail_height'], $is[0], $is[1]);
  35. break;
  36. default: // zmniejszanie z zachowaniem skali, aż do osiągnięcia co najmniej 180x160px
  37. $width = $is[0];
  38. $height = $is[1];
  39. $ratio = $is[0] / $config['thumbnail_width'];
  40. if ( $ratio > 1 )
  41. {
  42. $width = $config['thumbnail_width'];
  43. $height = intval($is[1] / $ratio);
  44. }
  45. $ratio = $height / $config['thumbnail_height'];
  46. if ( $ratio > 1 )
  47. {
  48. $width = intval($width / $ratio);
  49. $height = $config['thumbnail_height'];
  50. }
  51. $nts = imagecreatetruecolor($width, $height); // utworzenie obrazka o podanych rozmiarach z czarnym tłem
  52. imagecopyresized($nts, $ic, 0, 0, 0, 0, $width, $height, $is[0], $is[1]); break;
  53. }
  54. switch ( $extension ) // zapis do pliku
  55. {
  56. case 'gif':
  57. imagegif($nts, $config['path_thumbnails'] . $filename);
  58. break;
  59. case 'png':
  60. imagepng($nts, $config['path_thumbnails'] . $filename);
  61. break;
  62. default:
  63. imagejpeg($nts, $config['path_thumbnails'] . $filename);
  64. break;
  65. }
  66. imagedestroy($nts); // zniszczenie obrazka
  67. return $config['path_thumbnails'] . $filename;
  68. }
  69.  
  70.  
  71. $config = array();
  72. $config['thumbnail_width'] = 180; // maksymalna szerokość miniatury w pikselach
  73. $config['thumbnail_height'] = 160; // maksymalna wysokość miniatury w pikselach
  74. $config['thumbnail_scale'] = true; // czy przy minimalizowaniu wielkości zachowywać skalę?
  75. $config['path_images'] = 'images/'; // ścieżka do katalogu grafik
  76. $config['path_thumbnails'] = 'thumbnails/'; // ścieżka do katalogu miniatur
  77. $config['max_file_size'] = 1048576; // maksymalna wielkość pliku w bajtach, 1MB
  78. $config['accepted_extensions'] = array('jpg', 'jpeg', 'png', 'gif'); // dozwolone rozszerzenia
  79. $config['accepted_mimes'] = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); // dozwolone typy MIME
  80.  
  81. if ( !file_exists($config['path_images']) || !is_dir($config['path_images']) ) {
  82. if ( !mkdir($config['path_images']) ) { // utworzenie katalogu wraz
  83. exit('Folder obrazków niemożliwy do utworzenia!');
  84. }
  85. chmod($config['path_ images'], 0777); // nadanie praw
  86. }
  87. if ( !file_exists($config['path_thumbnails']) || !is_dir($config['path_thumbnails']) ) {
  88. if ( !mkdir($config['path_thumbnails']) ) { // utworzenie katalogu
  89. exit('Folder miniaturek niemożliwy do utworzenia!');
  90. }
  91. chmod($config['path_thumbnails'], 0777); // nadanie praw
  92. }
  93. if ( !extension_loaded('gd') ) { // sprawdzenie, czy GD jest załadowane
  94. if ( !dl('gd') ) { // próba wymuszenia załadowania
  95. exit('Biblioteka GD nie została załadowana!');
  96. }
  97. }
  98.  
  99. if ( isset($_FILES['upload_image']) && isset($_POST['upload_submit']) )
  100. {
  101. // pętla analizująca zawartość wszystkich trzech potencjalnie wysyłanych plików
  102. foreach ( $_FILES['upload_image']['error'] as $key => $arr )
  103. {
  104. if ( $_FILES['upload_image']['error'][$key] != UPLOAD_ERR_OK )
  105. {
  106. // błąd wysyłania pliku
  107. continue;
  108. }
  109. if ( $_FILES['upload_image']['size'][$key] > $config['max_file_size'] )
  110. {
  111. // plik jest za duży
  112. continue;
  113. }
  114. if ( file_exists($config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  115. {
  116. // poinformowanie użytkownika o fakcie, że plik o takiej nazwie już istnieje
  117. continue;
  118. }
  119. $extension = explode('.', $_FILES['upload_image']['name'][$key]);
  120. if ( in_array(strtolower($extension[count($extension)-1]), $config['accepted_extensions']) === false || in_array($_FILES['upload_image']['type'][$key], $config['accepted_mimes']) === false )
  121. {
  122. // niepoprawne rozszerzenie pliku
  123. continue;
  124. }
  125. $image = getimagesize($_FILES['upload_image']['tmp_name'][$key]);
  126. if ( !is_array($image) || $image[0] < 1 )
  127. {
  128. // plik graficzny jest spreparowany
  129. continue;
  130. }
  131. if ( !is_uploaded_file($_FILES['upload_image']['tmp_name'][$key]) )
  132. {
  133. // plik nie został wysłany
  134. continue;
  135. }
  136. if ( !move_uploaded_file($_FILES['upload_image']['tmp_name'][$key], $config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  137. {
  138. // wysyłanie nie może zostać zakończone poprawnie
  139. continue;
  140. }
  141. // wysyłanie pliku powiodło się!
  142. // opcjonalnie, jeżeli chcemy tylko z poziomu skrypt mieć dostęp do plików możemy odkomentować poniższa linijkę
  143. // chmod($config['path_images'] . $_FILES['upload_image']['name'][$key], 0600);
  144. print generateThumbnail($_FILES['upload_image']['name'][$key], $extension[count($extension)-1]); // funkcja tworząca miniaturkę
  145. }
  146. }
  147.  
  148. ?>
  149.  


Proszę o sugestie

Ten post edytował daruzagi 15.03.2010, 21:45:07
Go to the top of the page
+Quote Post
MateuszS
post 15.03.2010, 21:36:55
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


mi dodaje ;P tylko tam masz tagi dziwnie pootwierane i zamykane <? i ?>, nie wiem czemu

http://wklej.org/id/297548/


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
daruzagi
post 15.03.2010, 22:09:05
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 25.02.2010

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


Mateuszu masz rację,
Wiem o co chodzi
Jest problem z większymi plikami, nawet przy większej ilosć $config['max_file_size'] plików n skrypt nie dodaje plików o odpowiednio mniejszym rozmiarze

Co o tym sądzisz?
Go to the top of the page
+Quote Post
MateuszS
post 15.03.2010, 22:30:53
Post #4





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Daj link do strony gdzie to nie działa, może coś masz zablokowane przez serwer? Dobrze przeliczyłeś ten max_file_size?


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
erix
post 15.03.2010, 22:40:22
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ech, a co z limitem pamięci? Przecież ten obraz musi się gdzieś podziać.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
daruzagi
post 16.03.2010, 14:39:54
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 25.02.2010

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


Skrypt jak narazie w WebServie

ustawiam na 5 mb
$config['max_file_size'] = 5242880;
wczytuje plik 4,5

Nic nie pojawia się na dysku

limitem pamięci?

Ten post edytował daruzagi 15.03.2010, 22:53:39
Go to the top of the page
+Quote Post
MateuszS
post 16.03.2010, 15:28:35
Post #7





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


no może masz zasyfioną swoją przestrzeń dyskową, którą ci udostępnili np.


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
daruzagi
post 16.03.2010, 19:28:33
Post #8





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 25.02.2010

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


Tak jak pisałem na razie stronka umieszczona w ramach programu WEBSERV
On ograniczeń z pamięcią raczej nie posiada
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: 18.07.2025 - 02:40