Avatar billede michaeltryl Seniormester
04. november 2006 - 21:43 Der er 10 kommentarer og
1 løsning

upload med filnavn

jeg har dette upload script, men kan det gøres sådan at den giver billedfilen et nyt navn sådan at filen får navnet på brugeren som uploader det.
f.eks hvis brugeren 'test' uploader filen mig.jpg bliver den omdøbt til test.jpg og hvis han så på et tidspunkt uploader en ny bliver den gamle overskrevet.
det skal bruges til profil billede

<?

if($_FILES['userfile']['name']!=""){
    $uploaddir = 'billeder/';
    $uploadfile = $uploaddir . $_FILES['userfile']['name'];
$titel = $_POST['titel'];
    $titel = strip_tags($titel);
    $titel = mysql_real_escape_string($titel); 
    print "<pre>";
   
    $tael = mysql_query("SELECT * FROM avatar WHERE url = '$uploadfile'") or die(mysql_error());
    $antal = mysql_num_rows($tael);
    if($antal == 0 && !empty($titel))
    {
   
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
          if ( list( $width, $height, $type, $attr ) = getimagesize( $uploadfile ) )
          {
            if ( $width != 100 || $width != 100 )
            {
                unlink( $uploadfile );
                die( "Billedet skal være 50x50" );
            }
            else
            {
                 
                print "<h2>Fil er nu uploadet.</h2> ";
            }
          }
          else
          {
            unlink( $uploadfile );
            die( "Du må kun uploade billeder!" );
          }
      }
      }
    else {
          print "<h2>Fil er ikke uploadet enten fordi.<br>";
          print "- Begge felter er ikke udfyldt<br>- Filnavnet findes allerede</h2>";
}}
print "</pre>";
?>
<div><table><tr><td>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
<td valign="top"> Fil: <input type="file" name="userfile"></td>
<br>
</tr></table></div>
  <input type="submit" name="Submit" value="Upload">
</form>
Avatar billede coderdk Praktikant
04. november 2006 - 22:43 #1
Yep, hvis du f.eks. har gemt brugernavnet i $_SESSION['username'] så lav:

$uploadfile = $uploaddir . $_FILES['userfile']['name'];

om til:

$uploadfile = $uploaddir . $_SESSION['username'];
Avatar billede michaeltryl Seniormester
05. november 2006 - 16:04 #2
nu omdøber den fint filen til navnet på den bruger der logget ind, men den sætter ikke filtypen på. f.eks hvis brugeren test uploader mig.jpg får filen navnet test når den er uploadet, men. jpg kommer ikke på hvordan gør jeg dette
koden ser sådan ud
<?
$bruger = $_SESSION['Brugernavn'];
if($_FILES['userfile']['name']!=""){
    $uploaddir = 'billeder/';
    $uploadfile = $uploaddir . $bruger;
    print "<pre>";
   
   
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
          if ( list( $width, $height, $type, $attr ) = getimagesize( $uploadfile ) )
          {
            if ( $width != 100 || $width != 100 )
            {
                unlink( $uploadfile );
                die( "Billedet skal være 100x100" );
            }
            else
            {
                 
        mysql_query("UPDATE brugere SET billede='$uploadfile' WHERE Brugernavn='$bruger'") or die(mysql_error());


                print "<h2>Fil er nu uploadet.</h2> ";
            }
          }
          else
          {
            unlink( $uploadfile );
            die( "Du må kun uploade billeder!" );
          }
      }
      }
print "</pre>";
?>

jeg har også prøvet
$uploadfile = $uploaddir . $bruger]['name'];

uden held
Avatar billede michaeltryl Seniormester
05. november 2006 - 16:15 #3
kan jeg istedet for
if ( $width != 100 || $width != 100 )
gøre sødan at billedet max må fylde f.eks 200 kb
Avatar billede coderdk Praktikant
05. november 2006 - 17:00 #4
Lav:

$uploadfile = $uploaddir . $bruger;

om til:

$inf = path_info( $_FILES['userfile']['name'] );
$uploadfile = $uploaddir . $bruger . "." . $inf['extension'];

Du kan bare bruge filesize() til at se hvor stor filen er :)
Avatar billede coderdk Praktikant
05. november 2006 - 17:00 #5
Eller $_FILES['userfile']['size']
Avatar billede michaeltryl Seniormester
05. november 2006 - 17:12 #6
jeg får denne fejl
Fatal error: Call to undefined function: path_info() in /home/www/klub.magiske-michael.dk/upload.php on line 53

og linie 53 er denne
$inf = path_info( $_FILES['userfile']['name'] );

hvor skal jeg indsætte filesize()?
Avatar billede coderdk Praktikant
05. november 2006 - 17:29 #7
Din php er for gammel og skal opdateres! :P

Prøv:

$uploadfile = $uploaddir . $bruger . "." . array_pop( explode( '.', $_FILES['userfile']['name'] ) );
Avatar billede michaeltryl Seniormester
05. november 2006 - 17:39 #8
jep det virker
Avatar billede michaeltryl Seniormester
05. november 2006 - 17:46 #9
med hensyn til alderen på min php kan jeg ikke gøre noget da jeg ikke køre på egen server :-)

er det i denne linie jeg skal indsætte filesize()
if($_FILES['userfile']['name']!=""){

eller hvordab gør jeg det?
Avatar billede coderdk Praktikant
05. november 2006 - 21:36 #10
Erstat:

            if ( $width != 100 || $width != 100 )
            {
                unlink( $uploadfile );
                die( "Billedet skal være 50x50" );
            }

Med:

            if ( $_FILES['userfile']['size'] > 204800 )
            {
                unlink( $uploadfile );
                die( "Billedet skal være på 200KB eller under!" );
            }
Avatar billede michaeltryl Seniormester
05. november 2006 - 22:47 #11
okay mange tak for hjælpen
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