Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql/php] Upload plików na serwer + unikalna nazwa
guilty82
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 31
Dołączył: 26.03.2007

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


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!

Ten post edytował guilty82 19.05.2007, 23:00:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
andy84
post
Post #2





Grupa: Zarejestrowani
Postów: 165
Pomógł: 0
Dołączył: 14.11.2005
Skąd: London

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


przejzyj ten link - jest fajnie opisane jak mozna md5 uzyc do tego przy dole strony bardziej jest
"Handling duplicate file names"
powodzenia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) mi dziala znakomicie
Go to the top of the page
+Quote Post
guilty82
post
Post #3





Grupa: Zarejestrowani
Postów: 176
Pomógł: 31
Dołączył: 26.03.2007

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


Znalazłem ciekawe rozwiązanie problemu (IMG:http://forum.php.pl/style_emoticons/default/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ć (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował guilty82 20.05.2007, 07:04:45
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




użyj microtime + IP, ewentualnie user agent i zakoduj wszystko w md5.
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: 23.08.2025 - 20:30