Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql/php] Upload plików na serwer + unikalna nazwa
Forum PHP.pl > Forum > Przedszkole
guilty82
Witam,

Mam taki problem. Zrobiłem upload plików na serwer + wpis do bazy. W związku z tym, że nazwy uploadowanych plików mogą się powtarzać chciałbym przypisywać im w nazwie jakiś unikalny numerek, np. $id.
Mój skrypt uploadu wygląda tak:
  1. <?php
  2. for ($i=0; $i<sizeof($_FILES['plik']['size']); $i++) {
  3. if ($_FILES['plik']['size'][$i] !=0) {
  4. $uploaded = "upload/". $_FILES['plik']['name'][$i];
  5. if (is_uploaded_file($_FILES['plik']['tmp_name'][$i])) {
  6. if ($_FILES['plik']['size'][$i] > 1024*1024*1024) {
  7. echo "Plik numer $i jest za duży<br />";
  8. } else {
  9. move_uploaded_file($_FILES['plik']['tmp_name'][$i],$uploaded);
  10. echo "Operacja wysyłania pliku $i przebiegła pomyslnie<br />";
  11.  
  12. }
  13. } else {
  14. echo "Błąd przy przesyłaniu danych w pliku $i!<br />";
  15. }
  16. }
  17. }
  18. ?>


A do bazy dopisuje to:

  1. <?php
  2. $render_przod = $_FILES['plik']['name'][0];
  3. $render_tyl = $_FILES['plik']['name'][1];
  4. $rzut_parteru = $_FILES['plik']['name'][2];
  5. $rzut_poddasza = $_FILES['plik']['name'][3];
  6.  
  7. ...
  8.  
  9. $sql = "INSERT INTO domki SET
  10. render_przod='$render_przod', render_tyl='$render_tyl',
  11. rzut_parteru='$rzut_parteru', rzut_poddasza='$rzut_poddasza'";
  12. ?>


Pomocy!
andy84
przejzyj ten link - jest fajnie opisane jak mozna md5 uzyc do tego przy dole strony bardziej jest
"Handling duplicate file names"
powodzenia smile.gif mi dziala znakomicie
guilty82
Znalazłem ciekawe rozwiązanie problemu smile.gif
Jednak nie działa do końca poprawnie.. Otóż wklepałem to w mój kod i teraz wygląda tak:
  1. <?php
  2.  
  3. $ext = substr(strrchr($_FILES['plik']['name'], "."), 1);
  4. $randName = md5(rand() * time());
  5. for ($i=0; $i<sizeof($_FILES['plik']['size']); $i++) {
  6. if ($_FILES['plik']['size'][$i] !=0) {
  7. $uploaded = "upload/". $randName . '.' .$ext;
  8. if (is_uploaded_file($_FILES['plik']['tmp_name'][$i])) {
  9. if ($_FILES['plik']['size'][$i] > 1024*1024*1024) {
  10. echo "Plik numer $i jest za duży<br />";
  11. } else {
  12. move_uploaded_file($_FILES['plik']['tmp_name'][$i],$uploaded);
  13. echo "Operacja wysyłania pliku $i przebiegła pomyslnie<br />";
  14.  
  15. }
  16. } else {
  17. echo "Błąd przy przesyłaniu danych w pliku $i!<br />";
  18. }
  19. }
  20. }
  21. ?>


Problem leży w zmiennej $ext. Po prostu zapisuje plik na serwerze bez rozszerzenia.
Nie wiem jak to rozwiązać sad.gif
webdice
użyj microtime + IP, ewentualnie user agent i zakoduj wszystko w md5.
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.