Nightflyer Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 (endret) Har et script som laster opp bilder til en bestemt mappe og samtidig lister opp bildene i mappen slik at de også kan slettes, så jeg lurer på hvordan man kan redigere dette scripte til og vise thumbnails av bildene som listes opp slik at man lettere kan se hvilket bilde som skall slettes? <?php //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv // You may change maxsize, and allowable upload file types. //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //Mmaximum file size. You may increase or decrease. $MAX_SIZE = 2000000; //Allowable file Mime Types. Add more mime types if you want $FILE_MIMES = array('image/jpeg','image/jpg','image/gif' ,'image/png'); //Allowable file ext. names. you may add more extension names. $FILE_EXTS = array('.jpg','.png','.gif'); //Allow file delete? no, if only allow upload only $DELETABLE = true; //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv // Do not touch the below if you are not confident. //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /************************************************************ * Setup variables ************************************************************/ $site_name = $_SERVER['HTTP_HOST']; $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; $upload_dir = "images/"; $upload_url = $url_dir."/images/"; $message =""; /************************************************************ * Create Upload Directory ************************************************************/ if (!is_dir("files")) { if (!mkdir($upload_dir)) die ("upload_files directory doesn't exist and creation failed"); if (!chmod($upload_dir,0755)) die ("change permission to 755 failed."); } /************************************************************ * Process User's Request ************************************************************/ if ($_REQUEST[del] && $DELETABLE) { $resource = fopen("log.txt","a"); fwrite($resource,date("Ymd h:i:s")."DELETE - $_SERVER[REMOTE_ADDR]"."$_REQUEST[del]\n"); fclose($resource); if (strpos($_REQUEST[del],"/.")>0); //possible hacking else if (strpos($_REQUEST[del],$upload_dir) === false); //possible hacking else if (substr($_REQUEST[del],0,6)==$upload_dir) { unlink($_REQUEST[del]); print "<script>window.location.href='$url_this?message=deleted successfully'</script>"; } } else if ($_FILES['userfile']) { $resource = fopen("log.txt","a"); fwrite($resource,date("Ymd h:i:s")."UPLOAD - $_SERVER[REMOTE_ADDR]" .$_FILES['userfile']['name']." " .$_FILES['userfile']['type']."\n"); fclose($resource); $file_type = $_FILES['userfile']['type']; $file_name = $_FILES['userfile']['name']; $file_ext = strtolower(substr($file_name,strrpos($file_name,"."))); //File Size Check if ( $_FILES['userfile']['size'] > $MAX_SIZE) $message = "The file size is over 2MB."; //File Type/Extension Check else if (!in_array($file_type, $FILE_MIMES) && !in_array($file_ext, $FILE_EXTS) ) $message = "Sorry, $file_name($file_type) is not allowed to be uploaded."; else $message = do_upload($upload_dir, $upload_url); print "<script>window.location.href='$url_this?message=$message'</script>"; } else if (!$_FILES['userfile']); else $message = "Invalid File Specified."; /************************************************************ * List Files ************************************************************/ $handle=opendir($upload_dir); $filelist = ""; while ($file = readdir($handle)) { if(!is_dir($file) && !is_link($file)) { $filelist .= "<a href='$upload_dir$file'>".$file."</a>"; if ($DELETABLE) $filelist .= " <a href='?del=$upload_dir$file' title='delete'>x</a>"; $filelist .= "<sub><small><small><font color=grey> ".date("d-m H:i", filemtime($upload_dir.$file)) ."</font></small></small></sub>"; $filelist .="<br>"; } } function do_upload($upload_dir, $upload_url) { $temp_name = $_FILES['userfile']['tmp_name']; $file_name = $_FILES['userfile']['name']; $file_name = str_replace("\\","",$file_name); $file_name = str_replace("'","",$file_name); $file_path = $upload_dir.$file_name; //File Name Check if ( $file_name =="") { $message = "Invalid File Name Specified"; return $message; } $result = move_uploaded_file($temp_name, $file_path); if (!chmod($file_path,0777)) $message = "change permission to 777 failed."; else $message = ($result)?"$file_name uploaded successfully." : "Somthing is wrong with uploading a file."; return $message; } ?> <center> <font color=red><?=$_REQUEST[message]?></font> <br> <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post"> Upload File <input type="file" id="userfile" name="userfile"> <input type="submit" name="upload" value="Upload"> </form> <br><b>My Files</b> <hr width=70%> <?=$filelist?> <hr width=70%> </center> Endret 7. februar 2006 av Nightflyer Lenke til kommentar
ramvi Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 Før jeg fortsetter; Leste ikke kodingen din (kan forklare et eventuelt dårlig svar). For å vise thumbnails må det finnes thumbnails å vise (eller så må du vise det fullebildet skalert. Altså med helt vanlig <img> kommando. Går ut i fra det ikke er dette du tenker på). Er spørsmålet hvordan du genererer thumbnails? Lenke til kommentar
NH Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 ramvi Dette er faktisk helt feil, du kan helt fint resize et bilde til thumbnail med GD Da dette krever at php behandler vert enesete bilde før visning ( da du ikke trenger å lagre bildet etter resize) er det ikke alltid den mest optimale løsningen. Det beste alternativet her er å bruke et upload script som lager thumbs for deg. jeg har laget en klasse som kan gjøre dette for deg. Du finner kildekoden HER' Lagre kildekoden som f.eks resize.class.php, endre default variblene og bytt ut følgende linje $result = move_uploaded_file($temp_name, $file_path); med require_once('resize.class.php'); $upload = new move_upload(); $upload->move($temp_name, $file_path); Lenke til kommentar
ramvi Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 Sorry, NH. Jeg må ha sett veldig bestemt og bastant ut... Når jeg sa at thumbsene måtte finnes tenkte jeg på akkurat det at thumbsene må lages me GD. Det er derfor jeg spør om spørsmålet er hvordan han lager thumbs (noe du nå har svart på). Om du lagrer dem eller lager dem på nytt hver gang siden lastes er vel hippsomhapp Lenke til kommentar
ramvi Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 (endret) Jeg har laget en funksjon her som resizer det opplastede bildet og lager thumb. Skal være forstålig... <? function forminskThumb($mappe, $bilde, $maksBredde, $maksHoyde, $maksBreddeThumb, $maksHoydeThumb, $kvalitet) { $ikkeForstorr = 0; //Korrigerer om funksjonen kjøres mange ganger //Lager thumb-mappe, om det ikke finnes if (!file_exists($mappe."thumb")) { mkdir($mappe."thumb"); } list($orgBredde, $orgHoyde) = getimagesize($mappe.$bilde); //Henter orginalstørrelser //Resize, utregningen $nyHoyde = ($maksBredde / $orgBredde) * $orgHoyde; if ($nyHoyde > $maksHoyde) { $nyBredde = ($maksHoyde / $orgHoyde) * $orgBredde; if ($nyBredde < $orgBredde) { $maksBredde = $nyBredde; } else { $ikkeForstorr = 1; } $maksBreddeThumb = ($maksHoydeThumb / $orgHoyde) * $orgBredde; } else { if ($nyHoyde < $orgHoyde) { $maksHoyde = $nyHoyde; } else { $ikkeForstorr = 1; } $maksHoydeThumb = ($maksBreddeThumb / $orgBredde) * $orgHoyde; } if (var_dump(imagecreatefromjpeg($mappe.$bilde))) { //Thumbnail $rammen = imagecreatetruecolor($maksBreddeThumb, $maksHoydeThumb); $orgBilde = imagecreatefromjpeg($mappe.$bilde); imagecopyresampled($rammen, $orgBilde, 0, 0, 0, 0, $maksBreddeThumb, $maksHoydeThumb, $orgBredde, $orgHoyde); imagejpeg($rammen, $mappe."thumb/".$bilde, $kvalitet); unset($rammen,$orgBilde); //Rensker minnet //Resize hovedbildet if (!$ikkeForstorr) { $rammen = imagecreatetruecolor($maksBredde, $maksHoyde); $orgBilde = imagecreatefromjpeg($mappe.$bilde); imagecopyresampled($rammen, $orgBilde, 0, 0, 0, 0, $maksBredde, $maksHoyde, $orgBredde, $orgHoyde); unlink($mappe.$bilde); //Sletter orginalbildet imagejpeg($rammen, $mappe.$bilde, $kvalitet); unset($rammen,$orgBilde); //Rensker minnet } } else { unlink($mappe.$bilde); //Sletter orginalbildet om det var for stort //Renske opp mapper om alle bildene var for store. Gi en form for output } } ?> Endret 7. februar 2006 av ramvi Lenke til kommentar
NH Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 funksjonen din fungerer jo kun med jpg da... Eneste ulempen. ellers er metoden din prikk lik. Vil bare påpeke at GD og kan gjøre dette utenfor et opplastningsscript (laget det før, har det også enda om ønskelig) Klassen min _kan_ utføre følgende funksjoner - Lage thumb - Resize Orginalbilde - Legge på tekst nederst i venstre hjørne (alà deiligst.no) - Legge på logo nederst i høyre hjørne (likt som på deiligst.no) - Resize hovedbildet - legge til en prefix tal navnet på fila eller legge den i en annen mappe mer info her: http://norskwebforum.no/viewtopic.php?t=22753 Lenke til kommentar
ramvi Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 Haha, d e kje ein konkurranse... (Eller?) Prøvde bare å være en hjelpende hånd og forsvare meg fra: ramviDette er faktisk helt feil, du kan helt fint resize et bilde til thumbnail med GD Hyggeligt at du gadd å lesa gjennom koden min og se at den bare virke med jpg forresten =) Til dem som tar i bruk enten mitt eller NH sitt script så er det viktig å merke seg at resizingen bare lar seg gjøre om det er nok mem_limit i php.ini. Hos web10.nu er den på 8 mb. Dette gjør at funksjonen virker på bilder rundt 1024x768. Scriptet ignorerer bilder som er for store med var_dump funksjonen som brukes. Lenke til kommentar
NH Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 Hehe. nei, beklager. er ikke en konkuranse, virka kansje litt sånn ja. Bare forklarte jeg har du testet dette med var_dump() Burde ikke dette sende ut info? (orker ikke teste selv for øyeblikket) Lenke til kommentar
Nightflyer Skrevet 7. februar 2006 Forfatter Del Skrevet 7. februar 2006 dette scripte bruker jeg bare til og laste opp og slette bilder i galleri mappen, har et annet script som lager thumbnail til selve galleriet Hvor i koden jeg postet skal jeg legge til en kodesnutt som lister opp bildene i en liste. Er det ikke her jeg må legge til en kode slik at listen blir med et bilde og filnavn? istede for bare filnavnet slik det er nå /************************************************************ * List Files ************************************************************/ $handle=opendir($upload_dir); $filelist = ""; while ($file = readdir($handle)) { if(!is_dir($file) && !is_link($file)) { $filelist .= "<a href='$upload_dir$file'>".$file."</a>"; if ($DELETABLE) $filelist .= " <a href='?del=$upload_dir$file' title='delete'>x</a>"; $filelist .= "<sub><small><small><font color=grey> ".date("d-m H:i", filemtime($upload_dir.$file)) ."</font></small></small></sub>"; $filelist .="<br>"; } } function do_upload($upload_dir, $upload_url) { $temp_name = $_FILES['userfile']['tmp_name']; $file_name = $_FILES['userfile']['name']; $file_name = str_replace("\\","",$file_name); $file_name = str_replace("'","",$file_name); $file_path = $upload_dir.$file_name; Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå