Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dodawanie zdjęcia + zmiana nazwy
Forum PHP.pl > Forum > Przedszkole
arekko
Witam, mam takie skrypt, który dodaje mi zdjęcie na serwer i usuwa stare istniejące.

  1. $config = array();
  2. $config['path_images'] = '../../../grafika/galeria/'; // ścieżka do katalogu grafik
  3. $config['max_file_size'] = 1048576; // maksymalna wielkość pliku w bajtach, 1MB
  4. $config['accepted_extensions'] = array('jpg', 'jpeg', 'png', 'gif'); // dozwolone rozszerzenia
  5. $config['accepted_mimes'] = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); // dozwolone typy MIME
  6.  
  7. if ( !file_exists($config['path_images']) || !is_dir($config['path_images']) ) {
  8. if ( !mkdir($config['path_images']) ) { // utworzenie katalogu wraz
  9. exit('Folder obrazków niemożliwy do utworzenia!');
  10. }
  11. chmod($config['path_ images'], 0777); // nadanie praw
  12. }
  13.  
  14. if ( !extension_loaded('gd') ) { // sprawdzenie, czy GD jest załadowane
  15. if ( !dl('gd') ) { // próba wymuszenia załadowania
  16. exit('Biblioteka GD nie została załadowana!');
  17. }
  18. }
  19.  
  20. if ( isset($_FILES['upload_image']) && isset($_POST['upload_submit']) )
  21. {
  22. // pętla analizująca zawartość wszystkich trzech potencjalnie wysyłanych plików
  23. foreach ( $_FILES['upload_image']['error'] as $key => $arr )
  24. {
  25. if ( $_FILES['upload_image']['error'][$key] != UPLOAD_ERR_OK )
  26. {
  27. continue;
  28. }
  29. if ( $_FILES['upload_image']['size'][$key] > $config['max_file_size'] )
  30. {
  31. echo "plik jest za duży";
  32. continue;
  33. }
  34. if ( file_exists($config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  35. {
  36. echo "Plik o takiej nazwie już istnieje!";
  37. continue;
  38. }
  39. $extension = explode('.', $_FILES['upload_image']['name'][$key]);
  40. if ( in_array(strtolower($extension[count($extension)-1]), $config['accepted_extensions']) === false || in_array($_FILES['upload_image']['type'][$key], $config['accepted_mimes']) === false )
  41. {
  42. echo "Niepoprawne rozszerzenie pliku.";
  43. continue;
  44. }
  45. $image = getimagesize($_FILES['upload_image']['tmp_name'][$key]);
  46. if ( !is_array($image) || $image[0] < 1 )
  47. {
  48. echo "Plik graficzny jest spreparowany.";
  49. continue;
  50. }
  51. if ( !is_uploaded_file($_FILES['upload_image']['tmp_name'][$key]) )
  52. {
  53. echo "Plik nie został wysłany.";
  54. continue;
  55. }
  56. if ( !move_uploaded_file($_FILES['upload_image']['tmp_name'][$key], $config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  57. {
  58. echo "Wysyłanie nie może zostać zakończone poprawnie.";
  59. continue;
  60. }
  61. echo "Zdjęcie zostało poprawnie dodane!";
  62.  
  63. include 'usunstare.php';


Skrypt usunstare.php

  1. $file= $_GET['zdjecie'];
  2. $katalog = "../../../grafika/galeria/";
  3. if (file_exists($katalog.$file))
  4. unlink($katalog.$file);
  5. echo'Zdjęcie zostało usunięte!'


Chciałbym teraz to tak zmienić, żeby zdjęcie, które dodaje miało taką samą nazwę jak to stare. Proszę o pomoc smile.gif
blahy
ciezko to ogarnac bez formatowania, ale nie wystarczy w move_uploaded_file w 2 parametrze dac $config['path_images'] . $_GET['zdjecie'] ?
arekko
Nic to nie daje sad.gif
Myślę, że trzeba coś tutaj zmienić:

  1. if ( file_exists($config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  2. {
  3. echo "Plik o takiej nazwie już istnieje!";
  4. continue;
  5. }


Ma ktoś może jakiś pomysł jak to zmienić? Proszę o pomoc; wskazówki.

W kodzie trzeba zastosować funkcję rename tylko jak ustawić aby zmieniała nazwę dodanego zdjęcia na nazwę starego już istniejącego?
b4rt3kk
Nie musisz usuwać starego pliku, wystarczy, że nadpiszesz go nowym, czyli wywal wszystkie warunki które sprawdzają, czy takowy plik już istnieje.
arekko
No tak, tylko, żeby go nadpisać oby dwa muszą mieć taką samą nazwę. Więc potrzebuje kodu który będzie zmieniał nazwę zdjęcia dodawanego na nazwę starego. Wiem, że do tego można użyć rename. Jednak nie potrafię tego zastosować w tym kodzie.

b4rt3kk
Cytat(arekko @ 25.02.2015, 23:49:18 ) *
No tak, tylko, żeby go nadpisać oby dwa muszą mieć taką samą nazwę. Więc potrzebuje kodu który będzie zmieniał nazwę zdjęcia dodawanego na nazwę starego. Wiem, że do tego można użyć rename. Jednak nie potrafię tego zastosować w tym kodzie.


No tak, tylko powiedz mi w jaki sposób chcesz rozpoznać, że nowo wczytany plik jest tym, który ma nadpisać któryś ze starych?

Nie, rename nie jest tu w ogóle potrzebne, bo i po co?
arekko
W takim razie mam takie coś:
Pierwsza strona to plik edytuj.php. Wczytuje on zdjęcia zapisuje w tablicy sortuje i wyswietla. Zdjęcie przechowywane jest w zmiennej $filename['zdjecie'].Gdy użytkownik kliknie na jakieś zdjęcie zostaje wczytany plik dodaj.php.

Plik edytuj.php
  1. $katalog = "../../../grafika/galeria/";
  2. $handle = opendir($katalog);
  3.  
  4. while (($zdjecie = readdir($handle))!=false)
  5. {
  6. if ($zdjecie != '.' && $zdjecie != '..')
  7. {
  8. $tablica[] = array( 'czas' => filemtime( $katalog.'/'.$zdjecie ), 'zdjecie' => $zdjecie);
  9. }
  10. }
  11.  
  12. arsort($tablica);
  13. foreach ($tablica as $filename)
  14. {
  15. echo'<li class="galeria"><img src="'.$katalog.'/'.$filename['zdjecie'].'" />
  16. <a href="dodaj.php?zdjecie='.$filename['zdjecie'].'" class="odnosnik"><div class="zmien">Zmień</div></a></li>';
  17.  
  18. }


plik dodaj.php Mamy tu teraz kod który dodaj zdjęcie. W zmiennej $filename['zdjecie] przechowywana jest nazwa starego zdjęcie w które klikneliśmy. W tym kodzie dodaje nowe zdjecie jednak ono dodaje się z swoją nazwą. Jak zrobić to tak żeby zdjęcie dodawało się już z nazwą z $filename['zdjecie']. ( czyli jak nadpisac to zdjęcie? )Skoro nazwę starego zdjęcia już mam.

  1. $config = array();
  2. $config['path_images'] = '../../../grafika/galeria/'; // ścieżka do katalogu grafik
  3. $config['max_file_size'] = 1048576; // maksymalna wielkość pliku w bajtach, 1MB
  4. $config['accepted_extensions'] = array('jpg', 'jpeg', 'png', 'gif'); // dozwolone rozszerzenia
  5. $config['accepted_mimes'] = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); // dozwolone typy MIME
  6.  
  7. if ( !file_exists($config['path_images']) || !is_dir($config['path_images']) ) {
  8. if ( !mkdir($config['path_images']) ) { // utworzenie katalogu wraz
  9. exit('Folder obrazków niemożliwy do utworzenia!');
  10. }
  11. chmod($config['path_ images'], 0777); // nadanie praw
  12. }
  13.  
  14. if ( !extension_loaded('gd') ) { // sprawdzenie, czy GD jest załadowane
  15. if ( !dl('gd') ) { // próba wymuszenia załadowania
  16. exit('Biblioteka GD nie została załadowana!');
  17. }
  18. }
  19.  
  20. if ( isset($_FILES['upload_image']) && isset($_POST['upload_submit']) )
  21. {
  22. // pętla analizująca zawartość wszystkich trzech potencjalnie wysyłanych plików
  23. foreach ( $_FILES['upload_image']['error'] as $key => $arr )
  24. {
  25. if ( $_FILES['upload_image']['error'][$key] != UPLOAD_ERR_OK )
  26. {
  27. continue;
  28. }
  29. if ( $_FILES['upload_image']['size'][$key] > $config['max_file_size'] )
  30. {
  31. echo "plik jest za duży";
  32. continue;
  33. }
  34. if ( file_exists($config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  35. {
  36. echo "Plik o takiej nazwie już istnieje!";
  37. continue;
  38. }
  39. $extension = explode('.', $_FILES['upload_image']['name'][$key]);
  40. if ( in_array(strtolower($extension[count($extension)-1]), $config['accepted_extensions']) === false || in_array($_FILES['upload_image']['type'][$key], $config['accepted_mimes']) === false )
  41. {
  42. echo "Niepoprawne rozszerzenie pliku.";
  43. continue;
  44. }
  45. $image = getimagesize($_FILES['upload_image']['tmp_name'][$key]);
  46. if ( !is_array($image) || $image[0] < 1 )
  47. {
  48. echo "Plik graficzny jest spreparowany.";
  49. continue;
  50. }
  51. if ( !is_uploaded_file($_FILES['upload_image']['tmp_name'][$key]) )
  52. {
  53. echo "Plik nie został wysłany.";
  54. continue;
  55. }
  56. if ( !move_uploaded_file($_FILES['upload_image']['tmp_name'][$key], $config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  57. {
  58. echo "Wysyłanie nie może zostać zakończone poprawnie.";
  59. continue;
  60. }
  61. echo "Zdjęcie zostało poprawnie dodane!";
  62.  
  63. }
  64. }



Jakiś pomysł na to? smile.gif

Czy ktoś powie mi jak mam to zmienić, żeby zdjęcie się nadpisywało?
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.