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?
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>
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:
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?
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..
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)