Avatar billede xfox Nybegynder
09. maj 2006 - 14:38 Der er 17 kommentarer og
1 løsning

Upload billede

Nedenstående er til at resize'e og uploade et billede. Det virker bare ikke. Er lidt usikker på denne kommando "$filename = $_FILES['userfile'];" Nogen der kan se en løsning?


<?
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>[Ingen titel]</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="Author" content="Steen Hjelmstrand" />


</head>
<body>
<?


               
        if (isset($status))
        {
           
                            $sti2="upload/test.jpg";
                       
                            //chmod($sti, 0766);
                           
                            //laver thumbnail
                           
                            // The file
                            $filename = $_FILES['userfile'];
                            echo $filename;
                           
                            // Set a maximum height and width
                            $width = 100;
                            $height = 50;

                            // Content type
                            header('Content-type: image/jpeg');

                            // Get new dimensions
                            list($width_orig, $height_orig) = getimagesize($filename);

                            if ($width && ($width_orig < $height_orig)) {
                          $width = ($height / $height_orig) * $width_orig;
                            }
                            else {
                          $height = ($width / $width_orig) * $height_orig;
                            }

                            // Resample
                            $image_p = imagecreatetruecolor($width, $height);
                            $image = imagecreatefromjpeg($filename);
                            imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
                            ImageJPEG($image_p, "$sti2", 100 );           
                       
            }
           
?>


<table>
<form name="upload" method="post" action="billedupload.php" enctype="multipart/form-data" style="color:#FFFFFF">
    <tr>
        <td><input type="hidden" name="status" value="upload"><input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br> <input type="file" size="1" name="userfile" class="felt" onclick="scrollWindow2();"></td>
    </tr>
    <tr>
        <td height="200" valign="middle"><a href="#" onclick="submit();" class="link">Upload billede</a></td>
    </tr>
</form>
</table>


</body>
</html>
Avatar billede michael_stim Ekspert
09. maj 2006 - 14:44 #1
$filename = $_FILES['userfile']['name'];
Avatar billede michael_stim Ekspert
09. maj 2006 - 14:46 #2
$filename = $_FILES['userfile']['name'];//Navnet
$filename = $_FILES['userfile']['size'];//Størrelse
Avatar billede xfox Nybegynder
09. maj 2006 - 14:47 #3
Det virker stadig ikke. Jeg får ingen fil i min upload mappe.
Avatar billede xfox Nybegynder
09. maj 2006 - 14:49 #4
Det er vel heller ikke nok med bare navnet, da filen jo først bliver uploaded efter at være blevet resized. Altså den skal vel vide hvor filen ligger for at resize den inden den bliver lagt op på serveren.
Avatar billede michael_stim Ekspert
09. maj 2006 - 14:56 #5
$fra=$_FILES['userfile']['tmp_name'];
Avatar billede michael_stim Ekspert
09. maj 2006 - 15:02 #6
function resize( $filename, $newfilename, $maxw, $maxh ){
    $result = false;
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $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 );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}
if(isset($_POST['submit'])){
    if($_FILES["upfil"]["size"] > 0) {
    //Her skrives stien
        $konfiguration["upload_bibliotek"] = "sti";
        //Max størrelse
        $konfiguration["max_stoerrelse"] = "10000";
       
        /* Hvor flytter vi fra og til */
        $fra = $_FILES["upfil"]["tmp_name"];
        $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
       
        /* Check PHP-version */
        list($major, $minor, $rev) = explode(".", phpversion());
        if($major < 4){
          die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
      }
   
        /* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */
      if($minor < 1){
          $_FILES = $HTTP_POST_FILES;
        $_POST = $HTTP_POST_VARS;
        $_SERVER = $HTTP_SERVER_VARS;
      }
   
      /* Accepterer vi filens stoerrelse? */
      $fil_stoerrelse = filesize($fra)/1024;
      if($fil_stoerrelse > $konfiguration["max_stoerrelse"]){
          die("Desværre - filen er for stor. Jeg accepterer kun " .
        $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
        ceil($fil_stoerrelse, 1) . " kb");
      }
   
      if(function_exists("move_uploaded_file")) {
        resize($fra, $til, 600, 400);
          resize($fra, $til_t, 200, 130);
        }
        else {
          copy($fra, $til);
        }
    }
Avatar billede xfox Nybegynder
09. maj 2006 - 15:17 #7
Nu ser det således ud men virker stadig ikke:

<?
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>[Ingen titel]</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="Author" content="Steen Hjelmstrand" />


</head>
<body>
<?


               
        if (isset($status))
        {
           
                            function resize( $filename, $newfilename, $maxw, $maxh ){
    $result = false;
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $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 );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}
if(isset($_POST['submit'])){
    if($_FILES["upfil"]["size"] > 0) {
    //Her skrives stien
        $konfiguration["upload_bibliotek"] = "upload";
        //Max størrelse
        $konfiguration["max_stoerrelse"] = "10000";
       
        /* Hvor flytter vi fra og til */
        $fra = $_FILES["upfil"]["tmp_name"];
        $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
       
        /* Check PHP-version */
        list($major, $minor, $rev) = explode(".", phpversion());
        if($major < 4){
          die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
      }
   
        /* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */
      if($minor < 1){
          $_FILES = $HTTP_POST_FILES;
        $_POST = $HTTP_POST_VARS;
        $_SERVER = $HTTP_SERVER_VARS;
      }
   
      /* Accepterer vi filens stoerrelse? */
      $fil_stoerrelse = filesize($fra)/1024;
      if($fil_stoerrelse > $konfiguration["max_stoerrelse"]){
          die("Desværre - filen er for stor. Jeg accepterer kun " .
        $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
        ceil($fil_stoerrelse, 1) . " kb");
      }
   
      if(function_exists("move_uploaded_file")) {
        resize($fra, $til, 600, 400);
          resize($fra, $til_t, 200, 130);
        }
        else {
          copy($fra, $til);
        }
    }
                       
            }
            }
?>


<table>
<form name="upload" method="post" action="billedupload.php" enctype="multipart/form-data" style="color:#FFFFFF">
    <tr>
        <td><input type="hidden" name="status" value="upload"><input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br> <input type="file" size="1" name="upfil" class="felt" onclick="scrollWindow2();"></td>
    </tr>
    <tr>
        <td height="200" valign="middle"><a href="#" onclick="submit();" class="link">Upload billede</a></td>
    </tr>
</form>
</table>


</body>
</html>
Avatar billede michael_stim Ekspert
09. maj 2006 - 15:29 #8
if(isset($_POST['submit'])){ //Væk med denne her
Og sæt din:
if (isset($status))
        {
Efter funktionen
Avatar billede michael_stim Ekspert
09. maj 2006 - 15:31 #9
<?
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>[Ingen titel]</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="Author" content="Steen Hjelmstrand" />


</head>
<body>
<?


             
       
         
function resize( $filename, $newfilename, $maxw, $maxh ){
    $result = false;
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $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 );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}
if (isset($status)){
    if($_FILES["upfil"]["size"] > 0) {
    //Her skrives stien
        $konfiguration["upload_bibliotek"] = "upload";
        //Max størrelse
        $konfiguration["max_stoerrelse"] = "10000";
     
        /* Hvor flytter vi fra og til */
        $fra = $_FILES["upfil"]["tmp_name"];
        $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
     
        /* Check PHP-version */
        list($major, $minor, $rev) = explode(".", phpversion());
        if($major < 4){
          die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
      }
 
        /* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */
      if($minor < 1){
          $_FILES = $HTTP_POST_FILES;
        $_POST = $HTTP_POST_VARS;
        $_SERVER = $HTTP_SERVER_VARS;
      }
 
      /* Accepterer vi filens stoerrelse? */
      $fil_stoerrelse = filesize($fra)/1024;
      if($fil_stoerrelse > $konfiguration["max_stoerrelse"]){
          die("Desværre - filen er for stor. Jeg accepterer kun " .
        $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
        ceil($fil_stoerrelse, 1) . " kb");
      }
 
      if(function_exists("move_uploaded_file")) {
        resize($fra, $til, 600, 400);
          resize($fra, $til_t, 200, 130);
        }
        else {
          copy($fra, $til);
        }
    }
                     
            }
            }
?>


<table>
<form name="upload" method="post" action="billedupload.php" enctype="multipart/form-data" style="color:#FFFFFF">
    <tr>
        <td><input type="hidden" name="status" value="upload"><input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br> <input type="file" size="1" name="upfil" class="felt" onclick="scrollWindow2();"></td>
    </tr>
    <tr>
        <td height="200" valign="middle"><a href="#" onclick="submit();" class="link">Upload billede</a></td>
    </tr>
</form>
</table>


</body>
</html>
Avatar billede xfox Nybegynder
09. maj 2006 - 15:33 #10
Så ser det sådan her ud, men virker stadig ikke:

<?
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>[Ingen titel]</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="Author" content="Steen Hjelmstrand" />


</head>
<body>
<?


               
        if (isset($status))
        {
           
                            function resize( $filename, $newfilename, $maxw, $maxh ){
    $result = false;
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $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 );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}
if (isset($status)){
    if($_FILES["upfil"]["size"] > 0) {
    //Her skrives stien
        $konfiguration["upload_bibliotek"] = "upload";
        //Max størrelse
        $konfiguration["max_stoerrelse"] = "10000";
       
        /* Hvor flytter vi fra og til */
        $fra = $_FILES["upfil"]["tmp_name"];
        $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
       
        /* Check PHP-version */
        list($major, $minor, $rev) = explode(".", phpversion());
        if($major < 4){
          die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
      }
   
        /* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */
      if($minor < 1){
          $_FILES = $HTTP_POST_FILES;
        $_POST = $HTTP_POST_VARS;
        $_SERVER = $HTTP_SERVER_VARS;
      }
   
      /* Accepterer vi filens stoerrelse? */
      $fil_stoerrelse = filesize($fra)/1024;
      if($fil_stoerrelse > $konfiguration["max_stoerrelse"]){
          die("Desværre - filen er for stor. Jeg accepterer kun " .
        $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
        ceil($fil_stoerrelse, 1) . " kb");
      }
   
      if(function_exists("move_uploaded_file")) {
        resize($fra, $til, 600, 400);
          resize($fra, $til_t, 200, 130);
        }
        else {
          copy($fra, $til);
        }
    }
                       
            }
            }
?>


<table>
<form name="upload" method="post" action="billedupload.php" enctype="multipart/form-data" style="color:#FFFFFF">
    <tr>
        <td><input type="hidden" name="status" value="upload"><input type="hidden" name="MAX_FILE_SIZE" value="1000000"><br> <input type="file" size="1" name="upfil" class="felt" ></td>
    </tr>
    <tr>
        <td height="200" valign="middle"><a href="#" onclick="submit();" class="link">Upload billede</a></td>
    </tr>
</form>
</table>


</body>
</html>
Avatar billede xfox Nybegynder
09. maj 2006 - 15:40 #11
Der var vist en parentes for meget i din kode, men det virkede heller ikke da jeg fjernede den. Har du mulighed for at teste det selv?
Avatar billede michael_stim Ekspert
09. maj 2006 - 15:43 #12
Du skal fjerne den første "if (isset($status)){"
Og ændre den anden til if (isset($_POST['status'])){
Avatar billede xfox Nybegynder
09. maj 2006 - 15:57 #13
Perfekt, så virker det :o)
Der kommer bare en masse tegn på skærmen. Prøvede at fjerne "return $result;" men det hjælper ikke.
Avatar billede michael_stim Ekspert
09. maj 2006 - 16:08 #14
Fjern denne:
resize($fra, $til_t, 200, 130);
Avatar billede xfox Nybegynder
10. maj 2006 - 10:09 #15
Tak, det er meget flot. Men kan du forklare hvorfor den skriver alt det, når man laver 2x resize i træk? For jeg vil gerne have lavet et lille billede hvor højden er 90, og så et større billede hvor højden er 400, hvis højden på brugerens billede er større end 400px. Altså så den laver 2 størrelser af billedet når man uploader.
Avatar billede xfox Nybegynder
10. maj 2006 - 10:27 #16
Fandt selv fejlen, det andet resize kald, havde en sourse variable der ikke var oprettet. Kom med et svar og du får dine velfortjente points :o)
Avatar billede michael_stim Ekspert
10. maj 2006 - 11:28 #17
Svar ;o)
Avatar billede xfox Nybegynder
11. maj 2006 - 12:03 #18
Hvis du nu skulle have lyst, så er der et tillægsspørgsmål. Jeg har ændret taktik lidt. Vil kun have 1 stort billede uploadet, og der hvor jeg så skal bruge billedet i et mindre format, vil jeg resize "on the fly". Altså bare vise output'et uden at gemme det. Kan der laves lidt om i koden, så jeg bare kan vise output'et af en resize i stdet for at uploade? På forhånd mange tak.
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