Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Upload plików. Nadpisywanie tego "samego" pliku., Pliki o istniejącej nazwie są nadpisywane.
pablo7890
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.01.2009

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


Witam,
mój problem jest następujący:
mam skrypcik do uploadu plików, wszystko gra i jest prawie świetnie. Jedynym jak na razie, mankamentem jest to, że pliki o tej samej nazwie są nadpisywane, tzn. jak wrzucę plik test.txt, a na serwerze już istnieje plik o tej nazwie, ten stary zostanie nadpisany na świeży. Chciałbym aby nowy plik nie nadpisywał starego, tylko dostawał z przodu nazwy jakiś znak, cyfrę, datę, cokolwiek. Najlepiej datę z dokładną godziną. Jak to zrobić?

Pozdrawiam,
pablo7890

PS
Albo ewentualnie, żeby nazwa pliku była zmieniana automatycznie na aktualną datę i godzinę, ważne, żeby zostało prawidłowe rozszerzenie (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Najpierw sprawdzasz, czy plik o danje nazwie już istnieje na serwerze, jeśli tak, to PRZED wysłąniem nowego doajesz mu jakiś prefix, np. czas z time().
Go to the top of the page
+Quote Post
pablo7890
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.01.2009

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


Dzięki, ale chyba coś źle zrobiłem. A, nie napisalem, że korzystam z Smarty. Nie wiem, co może tu być źle napisane:

upload.php
  1. <?php
  2.  
  3. include("config.php");
  4.  
  5. if($_POST['submit']) {
  6.  
  7. $plik_tmp = $_FILES['plik']['tmp_name'];
  8. $plik_nazwa = $_FILES['plik']['name'];
  9. $plik_rozmiar = $_FILES['plik']['size'];
  10.  
  11. if(file_exists("upload/" . $plik_nazwa)) {
  12. $smarty->assign('exists', 'exists');
  13. }
  14. if(is_uploaded_file($plik_tmp)) {
  15. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  16.  
  17. $smarty->assign('nazwa_pliku', $plik_nazwa);
  18. $smarty->assign('rozmiar_pliku', $plik_rozmiar);
  19. }
  20.  
  21. }else{
  22. $smarty->display("upload.tpl");
  23. }
  24. ?>


upload.tpl
  1. {include file="header.tpl"}
  2.  
  3. {if $exists}
  4. Taki plik już istnieje. Zmień nazwę!
  5. {/if}
  6. {if $nazwa_pliku}
  7. Plik <b>{$nazwa_pliku}</b> o rozmiarze <b>{$rozmiar_pliku}</b> bajtow, został pomyślnie zapisany na serwerze! Wyślij następny plik:
  8. {/if}
  9.  
  10. <form enctype="multipart/form-data" action="upload.php" method="POST">
  11. <input type="hidden" name="MAX_FILE_SIZE" value="5000000000" />
  12. <input name="plik" type="file" /><br />
  13. <input type="submit" value="Wyślij plik" />
  14. </form>
  15. {include file="footer.tpl"}
Go to the top of the page
+Quote Post
blooregard
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




  1.  
  2. if(file_exists("upload/" . $plik_nazwa)) {
  3. $smarty->assign('exists', 'exists');
  4. }
  5. if(is_uploaded_file($plik_tmp)) {
  6. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  7.  
  8. $smarty->assign('nazwa_pliku', $plik_nazwa);
  9. $smarty->assign('rozmiar_pliku', $plik_rozmiar);
  10. }
  11.  


Przecież nadpisujesz go, mimo tego, że $exists będzie true.
To, że w Smarty wyświetlasz info o istniejącym pliku nie ma już znaczenia. To w PHP musisz obsłużyć sprawdzanie, czy plik istnieje.

Go to the top of the page
+Quote Post
pablo7890
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 8.01.2009

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


OK, jednak nawet bez tego sprawdzania (file_exists()) skrypt przestał działać. W ogóle nie wysyła plików na serwer. Po kliknięciu Wyślij, strona się jedynie odświeża.

EDIT
Ok, problem rozwiązałem. Serdecznie dziękuję wszystkim za pomoc.

Ten post edytował pablo7890 4.05.2010, 18:28:36
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: 11.10.2025 - 12:25