php rename
2 naročnika
2 naročnika
Pozdravljen!
Imam formo kjer uporabnik naloži tri slike, da se katera od slik ne prepiše zaradi istega imena,bi moral vsako uploadano sliko preimenovati, da ima unique filename.
Problem pa nastane, ker prva uploadana slika, mora ustrezati določeni dolžini, če ne ustreza potem uporabniku napiše sporočilo.
Zaenkrat imam takole in zadeva deluje
if(isset($_POST['submit'])) {
$target=$_SERVER['DOCUMENT_ROOT']."/slike";
foreach ($_FILES["slika"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["slika"]["tmp_name"][$key];
$name = $_FILES["slika"]["name"][$key];
move_uploaded_file($tmp_name, "$target/$name");
$slika_izdelka = $_FILES["slika"]["name"]["0"];
list($sirina,$dolzina,$tip,$attr) = getimagesize("$target/$slika_izdelka");
}
}
if(!empty($_FILES["slika"]["name"]["0"]) && ($dolzina <= 800)){
echo "<div class=\"sporocilo_napaka\"><p style=\"text-align: center;\">Dolžina slike je manjša od dovoljene!</p></div>";
}
if(empty($_FILES["slika"]["name"]["0"])){
echo "<div class=\"sporocilo_napaka\"><p style=\"text-align: center;\">Niste naložili slike izdelka!</p></div>";
}
if(empty($_FILES["slika"]["name"]["1"])){
echo "<div class=\"sporocilo_napaka\"><p style=\"text-align: center;\">Niste naložili logotipa podjetja!</p></div>";
}
if(!empty($_FILES["slika"]["name"]["0"]) && ($dolzina >= 800) && !empty($_FILES["slika"]["name"]["1"])){
echo "<div class=\"sporocilo_ok\"><p style=\"text-align: center;\">Datoteke uspešno shranjene!</p></div>";
}
}
Ampak na ta način, slika ki je uploadana ne dobi unique filenamea. Kako bi lahko rešil to, da bi sliko preimenoval dobil path te preimenovane slike in ga primerjal z določeno spremeljivko.
4 odgovori
Poskusi z: moveuploadedfile($tmpname, $target."/".sha1().".".substr($tmpname, strrpos($tmp_name, '.')));
schtr4jh, to kar se tiče kreiranja unique namea mi je jasno, nevem pa kako bi lahko potem spravil ta unique filename od $_FILES["slika"]["name"]["0"] v funkcijo getimagesize.
$novoIme = sha1().".".substr($tmpname, strrpos($tmpname, '.'));
moveuploadedfile($tmp_name, $target."/".$novoIme);
list($sirina,$dolzina,$tip,$attr) = getimagesize($target."/".$novoIme);
Spet sfalil rešitev?