Avatar billede martin421 Nybegynder
29. december 2008 - 13:37 Der er 8 kommentarer og
1 løsning

Hjælp til navn skift ved uploadning

Hej Eksperter.

Jeg har brug for hjælp til et problem jeg har, når jeg uploader billeder(logo) i PHP. Jeg uploader og resizer billeder til 2 server mapper, en normal og en thumb.

Jeg kunne godt tænke mig at ændre navnet på billedet, til det $id brugeren har, men har ikke kunne finde en løsning der virker!?

Nogen der har idéer eller kode foreslag til hvordan man kan ændre fil navnet ved upload??


Her er koden jeg bruger til at resize billederne med:
<?php
if(isset($_POST['update']) && is_numeric($_POST['id']))
{

include("../connect.php");

$uploadDir = '../update/logo/';  //Bibliotek, hvor filer uploades til
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
//THUMBS SETTINGS
$thumbDir = '../update/thumbs/';  //Bibliotek, hvor thumbs gemmes
$thumbPrefix = $id . ' thumb_'; //Hvad skal tilføjes til originalt filnavn?
$thumbHeight = 100;  //Thumb højde
$thumbWidth = 100;  //Thumb bredde
$thumbQuality = 85;  //Kvalitet af thumb, kan være fra 0 - dårligt til 100 - bedst

//Funktioner som bruges:
function getExtension($filename){
return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
}

function resize( $filename, $newfilename, $maxw, $maxh, $quality=85 )
{
$extension = getExtension($filename);
switch($extension)
{
case 'jpeg':
case 'jpe':
case 'jpg':
$srcim = imagecreatefromjpeg( $filename );
break;
case 'gif':
$srcim = imagecreatefromgif( $filename );
break;
case 'png':
$srcim = imagecreatefrompng( $filename );
break;
default:
return false;
}
$ow = imagesx( $srcim );
$oh = imagesy( $srcim );
$wscale = $maxw / $ow;
$hscale = $maxh / $oh;
$scale = min( $hscale, $wscale );
$nw = round( $ow * $scale, 0 );
$nh = round( $oh * $scale, 0 );
$dstim = imagecreatetruecolor( $nw, $nh );
imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
switch($extension)
{
case 'jpeg':
case 'jpe':
case 'jpg':
imagejpeg( $dstim, $newfilename, $quality );
break;
case 'gif':
imagegif( $dstim, $newfilename );
break;
case 'png':
$png_q = floor( abs( $quality / 10 - 9.9 ) );
imagepng( $dstim, $newfilename, $png_q );
break;
default:
return false;
}
imagedestroy( $dstim );
imagedestroy( $srcim );
  return file_exists($newfilename);
}
Avatar billede htx98i17 Professor
29. december 2008 - 13:55 #1
ved upload vha PHP copy() ?
Avatar billede jakobdo Ekspert
29. december 2008 - 15:30 #2
Du mangler vist at vise noget kode.
Men min resize kode, den laver jo det nye navn udfra: $newfilename
Så der kan du bare angive et nyt navn.
Avatar billede martin421 Nybegynder
29. december 2008 - 15:44 #3
Når jeg ændre $newfilename til en fast variabel, kommer der ikke endelse(filetype) på filen på serveren??
Avatar billede jakobdo Ekspert
29. december 2008 - 15:53 #4
$newfilename skal også indeholde endelse.
Avatar billede cronaldo Nybegynder
29. december 2008 - 16:15 #5
$fastvariabel = "hererfilnavnet";
$newfilename = $fastvariabel.".".$extension;

prøv det der, men der skal jo være noget forskelligt i filnavnet for at du kan uploade flere filer :) .. der kan du fx gøre således:

$fastvariabel = "hererfilnavnet";
$dato = date("U");
$rand = rand(0,999999);
$newfilename = $fastvariabel.$dato.$rand.".".$extension;

Ved ikke om det er sådan noget lign du havde i tankerne ?
Avatar billede martin421 Nybegynder
05. januar 2009 - 19:03 #6
Først Godt Nytår år herfra!!!

$extension et par steder i koden, var løsningen på min problemet.
Tak til jer begge.

cronaldo: Eller tak for foreslag ang. random med billederne. Men sagen er den, at hver bruger kun må uploade et billede, dette gør jeg ved at ændre navnet til brugerens $id, så de overskriver deres gamle billeder ;) (for at undgå server overload)
Avatar billede martin421 Nybegynder
05. januar 2009 - 19:19 #7
cronaldo og jakobdo, skriv hvis i vil have point!?
Avatar billede jakobdo Ekspert
05. januar 2009 - 20:35 #8
Svar!
Avatar billede jakobdo Ekspert
07. april 2009 - 17:18 #9
Takker for point.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester