Witam mam taki zapis ale chciałbym dodać ścieżkę do bazy załączonych plików i żeby każde zapisywały się w osobnym podkatalogu ......

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


czyli jakiś unikalny id formularza żeby przypisać do podkatalogu w katalogu path_images w którym zapiszą się zdjęcia..... niestety nikt nie pomógł w wersji zapisu bezpośrednio w mysql :/

czyli w pod tym wierszem utworzyc podkatalog w katalogu i nadać mu tez prawa i do niego zapisać pliki ....
  1. if ( !mkdir($config['path_images']) ) { // utworzenie katalogu wraz
  2. exit('Folder obrazków niemożliwy do utworzenia!');
  3. }
  4. chmod($config['path_ images'], 0777); // nadanie praw
  5. }


czyli jakos tak :
if ( !mkdir(images(path_images($config['id'])))) { // utworzenie podkatalogu z unikalna nazwa i utworzenie scieżki do niego zeby zapisac w bazie . Niestety niebardzo wiem jak.questionmark.gif?
exit('Folder obrazków niemożliwy do utworzenia!');
}
chmod(images(path_ images($config['id'], 0777))); // nadanie praw
}

tak żeby można było później połączyć pliki przy wyszukiwaniu w bazie z danymi z formularza. dodam ze formularz i pliki wysyłają się jednocześnie wiec jeszcze pytanie o sposób nadania identyfikatora bo jeszcze nie będzie nadane id w bazie . może to być pole hidden jako dodatkowe pole w bazie . ....?

lub $config['id'] = md5(microtime()); ale to dość niejasna metoda przynajmniej jak dla mnie i czy taka sama wartość zapisze się w bazie z resztą danych?
jeżeli ustalę ją w wartościach config na samym początku jeszcze przed $config = array()

pomocyyyy!!!! tongue.gif