Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload zdjęc, nie dodaje jpg jpeg
Forum PHP.pl > Forum > PHP
daruzagi
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
MateuszS
mi dodaje ;P tylko tam masz tagi dziwnie pootwierane i zamykane <? i ?>, nie wiem czemu

http://wklej.org/id/297548/
daruzagi
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?
MateuszS
Daj link do strony gdzie to nie działa, może coś masz zablokowane przez serwer? Dobrze przeliczyłeś ten max_file_size?
erix
Ech, a co z limitem pamięci? Przecież ten obraz musi się gdzieś podziać.
daruzagi
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?
MateuszS
no może masz zasyfioną swoją przestrzeń dyskową, którą ci udostępnili np.
daruzagi
Tak jak pisałem na razie stronka umieszczona w ramach programu WEBSERV
On ograniczeń z pamięcią raczej nie posiada
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.