Ebben a kódban hogyan lehetne megoldani, hogy ne tudják felülírni a korábban feltöltött fájlt ha ugyanaz a fájlnév?
if(isset($_POST['submit'])) { //ha megnyomtuk a feltöltés gombot
$target= "uploads/"; //célmappa Uploads
$file_name = $_FILES['file']['name']; //a célfájlt nevezze el a $_FILES superglobal változóban lévo fájlnévre (a fájl eredeti nevére)
$tmp_dir = $_FILES['file']['tmp_name']; //az ideiglenes mappa helyét a $tmp_dir változóban tároljuk
if(!preg_match('/(gif|jpe?g|png)$/i', $file_name)) //ha a fájlnak ($file_name-nek) a kiterjesztése nem gif, jpg/jpeg, png, akkor...
{
echo "Rossz fajltipus!"; //... "dobjon el" egy hibát
}
else
{
move_uploaded_file($tmp_dir, $target . $file_name); //az ideiglenes mappából átteszi a fájlt a végleges mappába (a $target . $file_name összeilleszti a két stringet, így uploads/fajlnev-et kapunk)
$feltoltve = true; //a feltoltve változó true értéket kap
}
if($feltoltve) {
$utvonal=$target.$file_name;
print("Sikeresen feltöltötted a képet!");
}
}
?>
Nem a kódon kívül kell megoldani, nem így értettem.
A kódban ilyen szempontból nincs hiba, azt csinálja, amit kell.
A kérdés az, hogy HOGYAN szeretnéd elkerülni azt, hogy az egyforma nevű fájlok ütközzenek. Ha ezt eldöntötted, utána kell a kódhoz hozzányúlni és ezt megvalósítani.
Erre meg nyilván ezer féle megoldás van, csak az a kérdés mi illeszkedik leginkább az üzleti logikához.
Sorszámozd, dátumozd a feltöltést.
pl.:
$new_file_name = base_convert(time(),10,36) . $file_name;
move_uploaded_file($tmp_dir, $target . $new_file_name);
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!