Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana skryptu uploadu
Forum PHP.pl > Forum > PHP
wlamywacz
Witam

Mam oto taki skrypt czy ktoś by mógł mi pomóc jak zrobić aby nazwy plików były generowane jak liczby od np.1-10000 i jeśli taka nazwa jeszcze nie istneje to są zapisywane na serwerze. Oto skrypt:

  1. <?php
  2. if ( isSet( $_FILES['pliczek'] ) === true ) 
  3. { 
  4. $files = is_array( $_FILES['pliczek'] ) === true ? $_FILES['pliczek'] : array( $_FILES['pliczek'] ); 
  5. $debug = ''; 
  6. $allow = array( 'image/x-png', 'image/gif', 'image/jpeg' ); 
  7.  
  8. for ( $i = 0, $j = sizeOf( $files['name'] ); $i < $j; $i++ ) 
  9. { 
  10. if ( empty( $files['name'][ $i ] ) === true ) 
  11. { 
  12. continue; 
  13. } 
  14.  
  15. if ( in_array( $files['type'][ $i ], $allow ) === true ) 
  16. { 
  17. if ( move_uploaded_file( $files['tmp_name'][ $i ], "$docelowy" . $files['name'] [ $i ] ) === true )
  18. { 
  19. $zapytanie = "INSERT INTO test VALUES('', '{$files['name'] [ $i ]}', '$kategoria')";
  20. $wykonaj = mysql_query($zapytanie) or die(mysql_error());
  21.  
  22. $zapytanie = "INSERT INTO generator VALUES('', '{$files['name'] [ $i ]}', '$kategoria')";
  23. $wykonaj = mysql_query($zapytanie) or die(mysql_error());
  24.  
  25.  
  26. $debug .= '<br /> + ' . $files['name'][ $i ]; 
  27. } 
  28. else 
  29. { 
  30. $debug .= '<br /> - ' . $files['name'][ $i ]; 
  31. } 
  32. } 
  33. else 
  34. { 
  35. $debug .= '<br /> - ' . $files['name'] . ' invalid type'; 
  36. } 
  37. } 
  38.  
  39. print $debug; 
  40. }
  41. ?>
1010
Kilka możliwości:
- sprawdzasz po kolei według plików jakie id już są i jak jest jakieś wolne to zapisujesz,
- zapisujesz sobie gdzies aktualny id i przy zapisie nowego sprawdzasz to...

To zależy do czego dokładnie ma to służyć.
bne
możesz spróbować $nazwa = rand (1,10000000000000000000); tongue.gif raczej nie powinny się powtarzać smile.gif

Ale uwaga istnieją wyjątki :]
wlamywacz
Mysalałem nad tym aby dać randoma od 1-1000 i przed wrzuceniem pliku sprawdzić w folderze czy nie ma pliku a takiej nazwie albo dodawać je do bazy i później sprawdzać ale nie potrafie sobie poradzić z ich nazwą bo tu jest wrzucane pare obrazków naraz nawet jest to [ $i ] Jakieś pomysły? smile.gif
heaven
może coś takiego?...
(kod wyjęty z kontekstu)
  1. <?php
  2. $ImagesName = array();
  3. $NumFile = GetFileNumber();// pobiera z bazy numer i go incrementuje
  4. $sSciezka = CreatePatchName($NumFile);//tworzy sciezke w nastepujacy sposob;
  5. //dla $NumFile = 123332 stworzy sciezke 12/33/32/ (systemomi latwiej wyszukac plik!) (przy duzych ilosciach oczywiscie)
  6.  
  7. if (!file_exists(UPLOAD_IMAGES_DIR.$sSciezka)) //jesli nie ma takiej sciezki to stworz
  8. mkdir(UPLOAD_IMAGES_DIR.$sSciezka,0777,true);
  9. //przegranie plikow w odpowiednie miejsce
  10. if (!$Files['error']['small']) {
  11. $ImagesName['small'] = $sSciezka.$NumFile.'_small.'.array_pop(explode('.', $Files['name']['small']));
  12. copy($Files['tmp_name']['small'],UPLOAD_IMAGES_DIR.$ImagesName['small']);
  13. } // czyli np. 12/33/32/123332_small.jpg
  14. ?>


  1. <?php
  2. function CreatePatchName($NumFile) {
  3. $iKatalogi = array();
  4. do {
  5. $iKatalogi[] = ( (strlen(''.($NumFile%100))==1) ? ('0'.($NumFile%100)) : (''.$NumFile%100) );//wymusza katalogi po 2 cyfry
  6. } while ($NumFile = ($NumFile - $NumFile%100) / 100);
  7. return implode('/',array_reverse($iKatalogi)).'/';
  8. }
  9. ?>
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.