03. marts 2008 - 10:27Der er
10 kommentarer og 1 løsning
md5 til ident af billede i galleri?
Hej derude... er ved at strikke et galleri sammen... indtil videre finder galleriet billederne ved hjælp af mappe strukturen... men jeg vil gerne havde nogle elementer med ind i galleriet som rating og kommentare til billederne... nu er mit spørgsmål så hvordan for jeg strikket databasen sammen med billederne da de jo bliver uploadet med FTP/web uploade... ved FTP vil jeg jo ikke kunne identificere dem og smide dem i MySQL'en... ideér?
Hehe som du siger ole så har jeg også tænkt meget på at tvine HTTP upload hehe :) Ville bare lige sende det i bredt forum for at hører hvad der var af ideér og meninger...
Du kunne gøre det, at du med FTP uploader til et bestemt dir 'tmp_uploads'. Derefter kalder du et bestemt PHP-script, som kikker 'tmp_uploads' igennem og flytter hver billedfil til din billedmappe, samtidig med at der oprettes en række i DB'en hvor filnavnet indsættes.
Eventuelt kan der indbygges en rename funktionalitet, hvis en fil i billedmappen har samme filnavn som en fil, der skal flyttes.
Hvis du FTP-uploader til 'tmp_upload' og vil have billederne liggende i 'billeder' - og har en MySQL-tabel med felterne 'upload_stamp', 'pic_path' og 'id' (det sidste med auto increment og indekseret som Primary Key), kan du bruge følgende script:
function getExt($sFile) { $a = explode(".", $sFile); return end($a); }
function checkAllowed($sFile) { global $aAllowed; $sExt = getExt($sFile); if ($aAllowed[ strtolower($sExt) ]) return true; return false; }
if ($hnd=opendir($sTmpDir)) { while ( ($sFile=readdir($hnd)) !== false ) { if ($sFile=="." || $sFile=="..") continue; if (!is_file($sTmpDir.$sFile) || !checkAllowed($file)) continue; $sql = "INSERT INTO `tabel_navn` SET `upload_stamp`='".time()."'"; mysql_query($sql) or die (mysql_error()); $nId = mysql_insert_id(); $sNewName = $sImgDir."pic_".$nId.".".getExt($sFile); $sql = "UPDATE `tabel_navn` SET `pic_path`='".$sNewName."' WHERE `id`='".$nId."' LIMIT 1"; mysql_query($sql) or die (mysql_error()); copy($sTmpDir.$sFile, $sNewName); unlink($sTmpDir.$sFile); } closedir($hnd); }
?>
Det kopierer alle billeder i mappen 'tmp_upload' over i mappen 'billeder' et ad gangen. Samtidig indsættes en post i DB'en - og filen navngives med id'en fra DB'en på følgende (id=123): 'pic_123.jpg'. Det vil jo altid være et unikt navn ;o)
Derudover indsættes et timestamp for det øjeblik, filen flyttes - ligesom du kunne have ekstra felter - f.eks. til en kommentar fra dig. Desuden kan du naturligvis have relaterede tabeller til brugerkommentarer, ratings o.lign.
Det kunne måske være en effektiv løsning ved upload af mange filer - men ellers kan du jo altid bruge HTTP ;o)
Cool nok olebole :P jeg prøver lige at se på det... kan bare gøre begge metoder muligt så det ville jo være fint
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.