Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dodawanie zdjęcia + zmiana nazwy
arekko
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
blahy
post
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 22
Dołączył: 20.07.2010

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


ciezko to ogarnac bez formatowania, ale nie wystarczy w move_uploaded_file w 2 parametrze dac $config['path_images'] . $_GET['zdjecie'] ?
Go to the top of the page
+Quote Post
arekko
post
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


Nic to nie daje (IMG:style_emoticons/default/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?

Ten post edytował arekko 25.02.2015, 18:43:43
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Nie musisz usuwać starego pliku, wystarczy, że nadpiszesz go nowym, czyli wywal wszystkie warunki które sprawdzają, czy takowy plik już istnieje.
Go to the top of the page
+Quote Post
arekko
post
Post #5





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


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.

Go to the top of the page
+Quote Post
b4rt3kk
post
Post #6





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


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?
Go to the top of the page
+Quote Post
arekko
post
Post #7





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


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? (IMG:style_emoticons/default/smile.gif)

Czy ktoś powie mi jak mam to zmienić, żeby zdjęcie się nadpisywało?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 02:25