Autor Zpráva
HGD
Profil
zdravim, potřeboval bych poradit, jak po uploadu obrázku nebo souboru změnit název na nějaký řetězec ?
Používam normální názvy po uploadu a je tam hroznej problém s diakritikou...
díky za pomoc
bukaj
Profil
HGD
Pokud jde o odstranění diakritiky, tak to se tu už hodněkrát řešilo. A vygenerování náhodného řetězce taky. Stačí hledat.

A pro přejmenování souboru může posloužit třeba fce rename().
HGD
Profil
mno, tak sem to nakonec vyřešil přes Time(), ale nějak mi nefunguje to rename ()
mam kód:
<?php
if(isset($_POST['sent'])){

$type = $_FILES['soubor']['type'];
$orig_name = $_FILES['soubor']['name'];
$size = $_FILES['soubor']['size'];

if ($type == "image/jpeg" or $type=="image/gif" or $type=="image/png") {
$date = StrFTime("%H%M%S%d%m%y", Time());
$name = (rename("$orig_name", "$date"));

if (move_uploaded_file ($soubor, "data/$name")) {
$size = ($size > 512)?( ($size/1024 > 512) ?sprintf("%.02f MB",($size/1024)/1024) :sprintf("%.02f kB",$size/1024)) :sprintf("%d B",$size);
header("location: index.php?page=count&size=$size&name=$name");
}else{
header("location: index.php?page=upload&new=ko");
}
}else{
header("location: index.php?page=upload&typ=ko");
}
}
?>
Apostolus
Profil
Nevím, proč to nefunguje, ale napadá mě, že nepočítáš s koncovkou, změníš název souboru, změníš název na 18454525425, ale ne na obrázek + kde bereš proměnnou $soubor?
HGD
Profil
mno a jak tam přidam asi koncovku?
$orig_name je název souboru i s koncovkou
$soubor beru z formuláře
Apostolus
Profil
$soubor změň na $soubor = $_FILES['soubor'][''tmp_name''];
a koncovku získáš pomocí explode..

$getExt = explode ('.', $orig_name);
$file_ext = $getExt[count($getExt)-1]; //zajistíš, že pokud soubor se jmenuje "bla.bla.jpg" tak opravu veme poslední koncovku

a pak uplodneš:

move_uploaded_file ($soubor, "data/$name.$file_ext"))
HGD
Profil
mno, tak takle by to už fungovalo, akorát to hází error:
Warning: rename(av_admin.gif,194815220807.gif): nen? souborem ani adres??em in /3w/xf.cz/h/h-upload/a/uvod.php on line 38
Apostolus
Profil
tak to udělej bez rename...tady si myslím, že by si mohl přejmenovat jen $_FILES['soubor'][''tmp_name'']; protože ten je uložený v tempu, zatímco $_FILES['soubor']['name']; je jen název toho souboru

ale udělej to bez toho, prostě přidej do proměný $name ten time

$name = $date;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: