Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> <input> zmiana nazwy przesyłanego pliku
maxcv5123
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 5.12.2016

Ostrzeżenie: (10%)
X----


Witam,
Korzystam z tego (https://www.developphp.com/video/JavaScript/File-Upload-Progress-Bar-Meter-Tutorial-Ajax-PHP) gotowego rozwiązania do przesyłania plików na serwer. Dodatkowo sam zrobiłem zapis url pliku do bazy. Mam jednak problem aby każdy plik miał inną nazwę. Chcę uniknąć posiadania na serwerze plików o dwóch identycznych nazwach. I tu pytanie jak to zrobić, aby np oryginalny plik o nazwie 'super pies.mp4' miał nazwę np 'super-pies-*.mp4' gdzie * to aktualna data
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Niree
post
Post #2





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


Raczej opcji z datą nie polecam. Ktoś może np. wrzucić plik tego samego dnia i jeden plik zastąpi się drugim plikiem (zakładając, że będą one tej samej nazwy).
Bardziej pasowałoby użyć generatora np. 5 losowych znaków z cyfr i liter, wtedy zmniejszy się możliwość zastąpienia pliku.

Ale jeżeli już:

  1. $temp = explode(".", $fileName); //rozdzielamy nazwe pliku od typu ($temp[0] - super pies, $temp[1] - mp4)
  2. $text = str_replace(' ','_',$temp[0]); //zamiana spacji na _ (wynik: $text = super_pies)
  3. $newfilename = "test_uploads/".$text."-".date("Y-m-d").".".end($temp); // ustawiamy ścieżkę i nazwę nowego pliku.
  4. if(move_uploaded_file($fileTmpLoc, $newfilename)){
  5. echo "$fileName upload is complete";
  6. //zapytanie mysql itp
  7. } else {
  8. echo "move_uploaded_file function failed";
  9. }


Wersja z generatorem:

  1. function passwordGenerator($length) {
  2. $uppercase = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'W', 'Y', 'Z');
  3. $lowercase = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'w', 'y', 'z');
  4. $number = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
  5.  
  6. $password = NULL;
  7.  
  8. for ($i = 0; $i < $length; $i++) {
  9. $password .= $uppercase[rand(0, count($uppercase) - 1)];
  10. $password .= $lowercase[rand(0, count($lowercase) - 1)];
  11. $password .= $number[rand(0, count($number) - 1)];
  12. }
  13.  
  14. return substr($password, 0, $length);
  15. } //wrzucić nad kodem
  16.  
  17. $temp = explode(".", $fileName); //rozdzielamy nazwe pliku od typu ($temp[0] - super pies, $temp[1] - mp4)
  18. $text = str_replace(' ','_',$temp[0]); //zamiana spacji na _ (wynik: $text = super_pies)
  19. $newfilename = "test_uploads/".$text."-".passwordGenerator(5).".".end($temp); // ustawiamy ścieżkę i nazwę nowego pliku.
  20. if(move_uploaded_file($fileTmpLoc, $newfilename)){
  21. echo "$fileName upload is complete";
  22. //zapytanie mysql itp
  23. } else {
  24. echo "move_uploaded_file function failed";
  25. }


Ten post edytował Niree 5.12.2016, 02:02:25
Go to the top of the page
+Quote Post
maxcv5123
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 5.12.2016

Ostrzeżenie: (10%)
X----


Cytat(Niree @ 5.12.2016, 01:44:19 ) *
Raczej opcji z datą nie polecam. Ktoś może np. wrzucić plik tego samego dnia i jeden plik zastąpi się drugim plikiem (zakładając, że będą one tej samej nazwy).



Dzięki za pomoc. Dodałbym jeszcze godzinę.
Chyba jednak zdecyduję się na id. Mam pytanie odnośnie wydajności. Do plików zawsze będę znał dokładny adres, nie będą one wyszukiwane itp. jest więc konieczność grupowania ich w podkatalogi? czy mogą być wszystkie w jednym folderze?
I drugie pytanie, czy w kodzie który podałem istnieje możliwość przesłania do pliku file_upload_parser.php dodatkową zmienną php nie podaną w formularzu. Niestety JavaScript to nie moja mocna strona.


Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 12:58