Avatar billede nordi Nybegynder
15. marts 2006 - 19:05 Der er 7 kommentarer

Upload fil til ens database

Hejsa, håber i kan hjælpe mig lidt..
har lavet en FORM, hvor folk kan skrive ting ind, og den bliver så sendt til min database....
Men jeg vil også gerne have at, man kan sende to billede med? Hvordan gør man det? er det svært?
Avatar billede jakobdo Ekspert
15. marts 2006 - 19:13 #1
Nej, det er ikke svært.
Du tilføjer blot to:
<input type="file" name="userFile[1]">
<input type="file" name="userFile[2]">

sådan! :o)

Jeg har leget lidt med upload af filer til DB tidligere, måske du kan bruge noget af min kode:

<?php

/******************************************\
*                                          *
* CREATE TABLE pictures (                  *
*  pid int(11) NOT NULL auto_increment,  *
*  title text,                            *
*  imgdata blob,                          *
*  PRIMARY KEY  (pid)                    *
*  ) ENGINE=MyISAM;                      *
*                                          *
\******************************************/

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

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;
}

$allowPics = array("jpg","jpeg","jpe");

if ($_POST['completed'] == 1)
{
    // Need to add - check for large upload. Otherwise the code
    // will just duplicate old file ;-)
    // ALSO - note that latest.img must be public write and in a
    // live appliaction should be in another (safe!) directory.
    if($_FILES['imagefile']['size'] > 1024000)
    {
        $errmsg = "Too large!";
    }
    else
    {
        $extension = strtolower(end(explode(".",$_FILES['imagefile']['name'])));
        if(!in_array($extension,$allowPics))
        {
            $errmsg = "Wrong filetype!";
        }
        else
        {
            resize($_FILES['imagefile']['tmp_name'],"latest.img",300,300);
            $instr = fopen("latest.img","rb");
            $image = addslashes(fread($instr,filesize("latest.img")));
            mysql_query ("insert into pictures (title, imgdata) values (\"".$_POST['whatsit']."\", \"".$image."\")") or die(mysql_error());
        }
    }
}

// Find out about latest image

$gotten = mysql_query("select * from pictures order by pid desc limit 1") or die(mysql_error());
if(mysql_num_rows($gotten)>0)
{
    $row = mysql_fetch_assoc($gotten);
    $title = htmlspecialchars($row['title']);
    $bytes = $row['imgdata'];
}
else
{
    $errmsg = "There is no image in the database yet";
    $title = "no database image available";
    // Put up a picture of our training centre
    $instr = fopen("./images.jpg","rb");
    $bytes = fread($instr,filesize("./images.jpg"));
}

// If this is the image request, send out the image

if ($_GET['gim'] == 1)
{
    header("Content-type: image/jpeg");
    print $bytes;
    exit ();
}
?>

<html>
<head>
<title>Upload an image to a database</title>
<body bgcolor=white><h2>Here's the latest picture</h2>
<font color=red><?= $errmsg ?></font>
<center><img src=?gim=1><br>
<b><?= $title ?></center>
<hr>
<h2>Please upload a new picture and title</h2>
<form enctype="multipart/form-data" method="post">
<input type="hidden" name="completed" value="1">
Please choose an image to upload: <input type="file" name="imagefile"><br>
Please enter the title of that picture: <input name="whatsit"><br>
then: <input type="submit"></form><br>
</body>
</html>
Avatar billede nordi Nybegynder
15. marts 2006 - 19:39 #2
ok...tak..lige et spørgsmål:
Det jeg har lavet er kun til min formular, altså der skal skrives noget PHP kodning.
feks, har jeg der hedder navn i min formular, der skriver jeg så §navn = §_REQUEST["navn"]; og så vidre nede med mysql osv så de kommer ind i ens database...men hvordan gør jeg det med billederne?
Håber i forstår..er lidt ny i det (c:
Avatar billede jakobdo Ekspert
15. marts 2006 - 19:44 #3
Uha, det lyder som noget af en projekt du er sprunget ud i så.
Ønsker du et færdigt script eller er din plan du skal kode det selv?
Avatar billede nordi Nybegynder
15. marts 2006 - 20:05 #4
hmm altså helst selv..men hvis det er svært sååååå.....hehe
er det virkelig så svært da?
men altså hvis det er et færdigt script, vil jeg da gerne kigge det igennem..

Du forstår godt hvad jeg mener ik? ved godt hvordan jeg for det ind i databasen med alt det andet, ved ik hvad jeg gør med billederne..
Avatar billede nordi Nybegynder
15. marts 2006 - 21:52 #5
Slet ingen?
Avatar billede nordi Nybegynder
15. marts 2006 - 22:11 #6
$_REQUEST["navn"]; skulle være et $ og ik § (c:
Avatar billede jakobdo Ekspert
16. marts 2006 - 08:05 #7
Billedet skal du jo først uploade, så skal du indlæse det i en variabel og så gemme denne variabel i databasen.

Som jeg gør her:

resize($_FILES['imagefile']['tmp_name'],"latest.img",300,300);
            $instr = fopen("latest.img","rb");
            $image = addslashes(fread($instr,filesize("latest.img")));
            mysql_query ("insert into pictures (title, imgdata) values (\"".$_POST['whatsit']."\", \"".$image."\")") or die(mysql_error());

Og du må jo prøv lidt selv så.
Min kode virker på et billede.

Og når du gerne vil selv, så kunne du evt starte med at lave en form som kan uploade et billede. (bare selve formen)
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