Avatar billede skirk Nybegynder
27. maj 2005 - 16:30 Der er 12 kommentarer

Problemer med enctype="multipart/form-data" i en form

Hej med jer kloge hoveder :)

Jeg har et meget meget sjovt problem synes jeg.

Jeg har lavet en lille billede upload form som et php script tager sig af. Php scriptet gør to ting kan man sige. 1. det tager billedet og skalere det om til en anden størrelse. 2. det smider billedet navn ind i en mysql db.

Her er koden:

<html>
<head>
    <title>New document</title>
</head>

<body>


<form name="upform" id="upform" enctype="multipart/form-data" action="index2.php" method="post">
<br>
<?php $dir = "../uppic/media/profiles/"; ?>
<br />
Fil: <input type="file" name="fileup" id="fileup" size="20" /><br />
Dir:<input type="text" name="dir" id="dir" readonly="readonly" size="20" value="<?php print $dir; ?>" style="background:;" /><br />
<input type="submit" value="Submit" name="submit">
</form>

           
<?php
       
if (isset($_POST['submit'])) {
   
    $filepath = $_POST['fileup'];
    echo $_FILES['fileup']['name'];
    echo $_POST['fileup'];
}


   
$filename = $_FILES['fileup']['name'];
$dirpath = "../media/profiles/";
echo $filename;
       
   
   
   
        $image = imagecreatefromjpeg($filepath);
        $w = imagesx($image);
        $h = imagesy($image);

        $maxw = 150;
        $maxh = 150;
        $scalw = $w/$maxw;
        $scalh = $h/$maxh;
       
        if ($scalw>$scalh){
           
            $neww = $w/$scalw;   
            $newh = $h/$scalw;       
        }
        else {
            $neww = $w/$scalh;                           
            $newh = $h/$scalh;   
        }

        $newimage = imagecreatetruecolor($neww,$newh);
        imagecopyresized($newimage,$image,0,0,0,0,$neww,$newh,$w,$h);
        $filnavn = pathinfo($filepath);
        $filnavn = $filnavn['basename'];
        imagejpeg($newimage,"../uppic/media/profiles/".$filnavn);   
   
       
    $kryb = md5($password);
   
    $conn = mysql_connect("localhost", "root", "") or die("Kunne ikke forbinde");
    mysql_select_db("test", $conn);
    mysql_query("INSERT INTO bruger(picpath) VALUES ('".$dirpath.$filename."')") or die (mysql_error());
   
?>   
</body>
</html>


Problemet ligger i enctype="multipart/form-data" (jeg sætter i min html form. Jeg har hørt at den er god at have med når man har med filer og gøre)Når jeg har den med så kan jeg kun få variablen mha.: $_FILES['fileup']['name']; og dvs. at filnavnet ikke bliver lagt i databasen men hvis jeg fjerner enctype="multipart/form-data" fra formen så virker Hej med jer kloge hoveder :)

Jeg har et meget meget sjovt problem synes jeg.

Jeg har lavet en lille billede upload form som et php script tager sig af. Php scriptet gør to ting kan man sige. 1. det tager billedet og skalere det om til en anden størrelse. 2. det smider billedet navn ind i en mysql db.

Her er koden:

<html>
<head>
    <title>New document</title>
</head>

<body>


<form name="upform" id="upform" enctype="multipart/form-data" action="index2.php" method="post">
<br>
<?php $dir = "../uppic/media/profiles/"; ?>
<br />
Fil: <input type="file" name="fileup" id="fileup" size="20" /><br />
Dir:<input type="text" name="dir" id="dir" readonly="readonly" size="20" value="<?php print $dir; ?>" style="background:;" /><br />
<input type="submit" value="Submit" name="submit">
</form>

           
<?php
       
if (isset($_POST['submit'])) {
   
    $filepath = $_POST['fileup'];
    echo $_FILES['fileup']['name'];
    echo $_POST['fileup'];
}


   
$filename = $_FILES['fileup']['name'];
$dirpath = "../media/profiles/";
echo $filename;
       
   
   
   
        $image = imagecreatefromjpeg($filepath);
        $w = imagesx($image);
        $h = imagesy($image);

        $maxw = 150;
        $maxh = 150;
        $scalw = $w/$maxw;
        $scalh = $h/$maxh;
       
        if ($scalw>$scalh){
           
            $neww = $w/$scalw;   
            $newh = $h/$scalw;       
        }
        else {
            $neww = $w/$scalh;                           
            $newh = $h/$scalh;   
        }

        $newimage = imagecreatetruecolor($neww,$newh);
        imagecopyresized($newimage,$image,0,0,0,0,$neww,$newh,$w,$h);
        $filnavn = pathinfo($filepath);
        $filnavn = $filnavn['basename'];
        imagejpeg($newimage,"../uppic/media/profiles/".$filnavn);   
   
       
    $kryb = md5($password);
   
    $conn = mysql_connect("localhost", "root", "") or die("Kunne ikke forbinde");
    mysql_select_db("test", $conn);
    mysql_query("INSERT INTO bruger(picpath) VALUES ('".$dirpath.$filename."')") or die (mysql_error());
   
?>   
</body>
</html>


Problemet ligger i enctype="multipart/form-data" (den sætter jeg i min html form. Jeg har hørt at den er god at have med når man har med filer og gøre) Når jeg har den med, så kan jeg kun få fat i variablen mha.: $_FILES['fileup']['name']; og dvs. at filnavnet bliver lagt i databasen men den scalere ikke billedet for $_POST['fileup']; virker ikke. Men hvis jeg fjerner enctype="multipart/form-data" fra formen, ja så virker
$_POST['fileup']; og den scalere billedet men $_FILES['fileup']['name']; virker ikke nu og så gemmer den ikke navnet i databasen.

Men altså der er kun en af dem der virker de virker ikke på samme tid og det skal de men så hvidt jeg kan se er det noget med enctype="multipart/form-data" at gøre :(


Jeg håber at der er en der kan hjælpe

Hilsen

Skirk
Avatar billede skirk Nybegynder
27. maj 2005 - 16:32 #1
Oops der gik noget galt jeg poser lige igen :)


Hej med jer kloge hoveder :)

Jeg har et meget meget sjovt problem synes jeg.

Jeg har lavet en lille billede upload form som et php script tager sig af. Php scriptet gør to ting kan man sige. 1. det tager billedet og skalere det om til en anden størrelse. 2. det smider billedet navn ind i en mysql db.

Her er koden:

<html>
<head>
    <title>New document</title>
</head>

<body>


<form name="upform" id="upform" enctype="multipart/form-data" action="index2.php" method="post">
<br>
<?php $dir = "../uppic/media/profiles/"; ?>
<br />
Fil: <input type="file" name="fileup" id="fileup" size="20" /><br />
Dir:<input type="text" name="dir" id="dir" readonly="readonly" size="20" value="<?php print $dir; ?>" style="background:;" /><br />
<input type="submit" value="Submit" name="submit">
</form>

           
<?php
       
if (isset($_POST['submit'])) {
   
    $filepath = $_POST['fileup'];
    echo $_FILES['fileup']['name'];
    echo $_POST['fileup'];
}


   
$filename = $_FILES['fileup']['name'];
$dirpath = "../media/profiles/";
echo $filename;
       
   
   
   
        $image = imagecreatefromjpeg($filepath);
        $w = imagesx($image);
        $h = imagesy($image);

        $maxw = 150;
        $maxh = 150;
        $scalw = $w/$maxw;
        $scalh = $h/$maxh;
       
        if ($scalw>$scalh){
           
            $neww = $w/$scalw;   
            $newh = $h/$scalw;       
        }
        else {
            $neww = $w/$scalh;                           
            $newh = $h/$scalh;   
        }

        $newimage = imagecreatetruecolor($neww,$newh);
        imagecopyresized($newimage,$image,0,0,0,0,$neww,$newh,$w,$h);
        $filnavn = pathinfo($filepath);
        $filnavn = $filnavn['basename'];
        imagejpeg($newimage,"../uppic/media/profiles/".$filnavn);   
   
       
    $kryb = md5($password);
   
    $conn = mysql_connect("localhost", "root", "") or die("Kunne ikke forbinde");
    mysql_select_db("test", $conn);
    mysql_query("INSERT INTO bruger(picpath) VALUES ('".$dirpath.$filename."')") or die (mysql_error());
   
?>   
</body>
</html>


Problemet ligger i enctype="multipart/form-data" (den sætter jeg i min html form. Jeg har hørt at den er god at have med når man har med filer og gøre) Når jeg har den med, så kan jeg kun få fat i variablen mha.: $_FILES['fileup']['name']; og dvs. at filnavnet bliver lagt i databasen men den scalere ikke billedet for $_POST['fileup']; virker ikke. Men hvis jeg fjerner enctype="multipart/form-data" fra formen, ja så virker
$_POST['fileup']; og den scalere billedet men $_FILES['fileup']['name']; virker ikke nu og så gemmer den ikke navnet i databasen.

Men altså der er kun en af dem der virker de virker ikke på samme tid og det skal de men så hvidt jeg kan se er det noget med enctype="multipart/form-data" at gøre :(


Jeg håber at der er en der kan hjælpe

Hilsen

Skirk
Avatar billede coderdk Praktikant
27. maj 2005 - 17:02 #2
Du skal ikke bruge $_POST['fileup'] du skal bruge $_FILES['fileup']

$filepath = $_FILES['fileup']['tmp_name'];
Avatar billede skirk Nybegynder
28. maj 2005 - 15:38 #3
Hmm det synes jeg heller ikke virker :(

hvis jeg bruger $filepath = $_FILES['fileup']['tmp_name']; med enctype="multipart/form-data" slået til får den en tilfældig værdie fx C:\WINDOWS\TEMP\php15.tmp og den kan jeg ikke bruge :( den ligger filen php15.tmp istedet det skaleret billede :(

Hvordan kan det være ?
Avatar billede coderdk Praktikant
28. maj 2005 - 15:44 #4
Ok, her er flow'et: Du uploader, billedet bliver gemt midlertidigt i $_FILES['fileup']['tmp_name'] - den bruger du til at flytte over det rigtige sted med move_uploaded_file:

  $nyfil = 'folder/' . basename( $_FILES['fileup']['name'] );
  move_uploaded_files( $_FILES['fileup']['tmp_name'], $nyfil );

Så kan du behandle billedet:

  $image = imagecreatefromjpeg($nyfil);

osv osv :)
Avatar billede skirk Nybegynder
28. maj 2005 - 15:51 #5
oki men 'folder/' er det der hvor den manipulered efil skal ligge eller ?
Avatar billede coderdk Praktikant
28. maj 2005 - 15:56 #6
Yep, det er der hvor du vil have dem til at ligge, jeg skrev bare folder for at skrive et eller andet ;)
Avatar billede skirk Nybegynder
28. maj 2005 - 16:58 #7
Tak coderdk nu virker det :) men hvad gør enctype="multipart/form-data" helt præcist ?
Avatar billede coderdk Praktikant
29. maj 2005 - 04:15 #8
Fortæller at der er mere end blot form-data (filer) med i POST'en ;)
Avatar billede skirk Nybegynder
29. maj 2005 - 16:58 #9
oki smart :)  har du fået point coderdk ?
Avatar billede coderdk Praktikant
29. maj 2005 - 17:00 #10
Øh nope :) Du har ikke accepteret ;)
Avatar billede skirk Nybegynder
29. maj 2005 - 17:13 #11
hmm det forstår jeg ikke værd gang jeg trykker på Accepter sker der ikke noget den registrere at jeg trykker men jeg bliver smidt tilbage til den samme side med en Accepter knap til din profil :(

mærkeligt
Avatar billede coderdk Praktikant
29. maj 2005 - 18:10 #12
Erh, ja, det lyder lidt mystiskt :)
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