Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ Upload pliku, Automatyczna zmiana nazwy pliku jeżeli istnieje?

Napisany przez: rysiul83 30.11.2008, 23:44:24

Witam.
Mam takie pytanie. Jak stworzyć funkcję, aby sprawdzała czy nazwa upload-owanego pliku na serwerze istnieje, i jeżeli tak aby sama ją zmieniała, np poprzez dodanie na końcu 1 i kolejno 2, 3..., lub daty itp...? A dodatkowo aby tą zmienioną nazwę zapisała w bazie MySQL?
Bardzo proszę o pomoc, i szybką odpowiedź.
Pozdrawiam, rysiul83

PS.

Albo czy jest możliwe stworzenie kodu, który nadaje upload-owanym plikom jedną nazwę z kolejną wartością liczbową, np:
material00001
material00002
...itd,
tylko, aby nie zmieniał rozszerzenia i nazwę zapisywał do bazy MySQL?questionmark.gif?

Napisany przez: erix 30.11.2008, 23:45:25

Nie wynajduj koła na nowo - nadawaj nazwy plików na podstawie identyfikatorów z bazy. One przecież są unikalne. winksmiley.jpg

Napisany przez: zzeus 1.12.2008, 08:18:41

Cytat(erix @ 30.11.2008, 23:45:25 ) *
Nie wynajduj koła na nowo - nadawaj nazwy plików na podstawie identyfikatorów z bazy. One przecież są unikalne. winksmiley.jpg


Rozwiązanie powyżej najlepsze, a jeśli koniecznie chcesz mieć swoje nazwy plików, to poprostu przed uploadem sprawdź za pomocą funkcji file_exists() czy plik istnieje. Jeśli funkcja zwróci true to dodaj na końcu nazwy pliku jakiś swój identyfikator (liczba, data)

Napisany przez: rysiul83 1.12.2008, 17:41:09

A możecie mi powiedzieć jak zrobić taką funkcję aby sprawdzała czy plik istnieje i jeżeli tak to dodawała do niego na końcu kolejno 1, 2, 3... I aby dodawała to nie do rozszerzenia pliku, a przed?

Napisany przez: bartg 1.12.2008, 19:50:34

Sprawdz czy istnieje plik nazwa1, jak istnieje to sprawdzasz czy istnieje nazwa 2, i tak w kólko. Nazywamy to rekurencją smile.gif

Co do rozszerzenia:

  1. <?php
  2. $file='test.php';
  3. $aFile= http://www.php.net/explode('.', $file);
  4. $ext = $aFile[http://www.php.net/count($aFile)-1];
  5. http://www.php.net/unset($aFile[http://www.php.net/count($aFile)-1]);
  6. $file = http://www.php.net/join('.', $aFile).'1'.'.'.$ext;
  7. ?>

Pisane z palca

Napisany przez: rysiul83 1.12.2008, 21:35:54

No dobrze ale jak to sprawdzić?questionmark.gif smile.gif

Napisany przez: zzeus 1.12.2008, 22:31:12

Cytat(rysiul83 @ 1.12.2008, 21:35:54 ) *
No dobrze ale jak to sprawdzić?questionmark.gif smile.gif


Czytaj dokładnie co Ci ludzie piszą - file_exists()

Pozdrawiam

Napisany przez: bartg 1.12.2008, 22:43:07

  1. <?php
  2. http://www.php.net/echo jest('test.php');
  3. function jest($file, $i=1, $orgfile='')
  4. {
  5.    if($orgfile=='')
  6.    {
  7.        $orgfile = $file;
  8.    }
  9.    if(http://www.php.net/file_exists($file))
  10.    {
  11.        $aFile= (http://www.php.net/array) http://www.php.net/explode('.', $orgfile);
  12.        $ext = $aFile[http://www.php.net/count($aFile)-1];
  13.        http://www.php.net/unset($aFile[http://www.php.net/count($aFile)-1]);
  14.        $file = http://www.php.net/join('.', $aFile).$i.'.'.$ext;
  15.        return jest($file, $i+1, $orgfile);
  16.    } else {
  17.        return $file;
  18.    }
  19. }
  20. ?>


Dokładnie działająca funkcja taka jak chciałeś. testowana przezemnie

PS. Pamiętaj o przycisku pomógł smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)