Gå til innhold

thumbnails i liste over bilder som skal slettes


Anbefalte innlegg

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 av Nightflyer
Lenke til kommentar
Videoannonse
Annonse

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

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

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

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 av ramvi
Lenke til kommentar

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

Haha, d e kje ein konkurranse... (Eller?) Prøvde bare å være en hjelpende hånd og forsvare meg fra:

ramvi

Dette 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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...