Bestand uit database halen
Ik heb een tutorial over het uploaden van een bestand en het downloaden van een bestand uit db gelezen
Het uploaden gaat (na wat geprul), maar bij het downloaden geeft hij ipv de foto een hele hoop tekens (de content van de foto)
dit is het script om het te uploaden
<form action="" enctype="multipart/form-data" method="post">
<input name="file" type="file" /><input type="submit" value="Uploaden!" /></form>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
if($_SERVER["REQUEST_METHOD"]=="POST"){
//Controle door middel van posten
// we willen het bestand open zie php functies!
if(!@fopen($HTTP_POST_FILES[file][tmp_name],"r")){
echo "Oeps een foutje";
//Als het open van het bestand niet lukt krijg de error anders gaan we verder met het uitlezen
}else{
$fp = @fopen($HTTP_POST_FILES[file][tmp_name],"r");
$content = fread($fp,filesize($HTTP_POST_FILES[file][tmp_name])); /* eerst de inhoud van het bestand uitlezen */
fclose($fp);
/* bestand sluiten */
/*alles is klaar we gaan nu alles in de database opslaan. Na afloop laten we de url zien om de image nog te kunnen op vragen.*/
$sql = "INSERT INTO images SET name='" . $HTTP_POST_FILES[file][name] . "', type='" . $HTTP_POST_FILES[file][type] . "', length='" .filesize($HTTP_POST_FILES[file][tmp_name]) . "', content='" .addslashes($content)."'";
mysql_query($sql) or Die(mysql_error());
$sql = "SELECT * FROM images ORDER BY id ASC LIMIT 1 ";
$query = mysql_query($sql);
$array = mysql_fetch_array($query);
mysql_query($sql);
print"Your image is succesfully uploaded to te server and saved in our database. If you want to request the image use this link:<br /> http://localhost/PHP%20Site/foto/script/image.php?id=".$array['id']." ";
// alles even printen
}
}else{
echo "error";
}
?>
if($_SERVER["REQUEST_METHOD"]=="POST"){
//Controle door middel van posten
// we willen het bestand open zie php functies!
if(!@fopen($HTTP_POST_FILES[file][tmp_name],"r")){
echo "Oeps een foutje";
//Als het open van het bestand niet lukt krijg de error anders gaan we verder met het uitlezen
}else{
$fp = @fopen($HTTP_POST_FILES[file][tmp_name],"r");
$content = fread($fp,filesize($HTTP_POST_FILES[file][tmp_name])); /* eerst de inhoud van het bestand uitlezen */
fclose($fp);
/* bestand sluiten */
/*alles is klaar we gaan nu alles in de database opslaan. Na afloop laten we de url zien om de image nog te kunnen op vragen.*/
$sql = "INSERT INTO images SET name='" . $HTTP_POST_FILES[file][name] . "', type='" . $HTTP_POST_FILES[file][type] . "', length='" .filesize($HTTP_POST_FILES[file][tmp_name]) . "', content='" .addslashes($content)."'";
mysql_query($sql) or Die(mysql_error());
$sql = "SELECT * FROM images ORDER BY id ASC LIMIT 1 ";
$query = mysql_query($sql);
$array = mysql_fetch_array($query);
mysql_query($sql);
print"Your image is succesfully uploaded to te server and saved in our database. If you want to request the image use this link:<br /> http://localhost/PHP%20Site/foto/script/image.php?id=".$array['id']." ";
// alles even printen
}
}else{
echo "error";
}
?>
dit is het script om het terug boven te halen
(hier zit de fout denk ik)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
/* image.php */
if (!empty($_GET['id'])) {
include("config.php");
//Haal gegevens op uit de db
$sql = "SELECT type,length,content FROM images WHERE id = '" .$_GET['id']. "' LIMIT 1";
$result = @mysql_query($sql) or Die(mysql_error());
while ($row = mysql_fetch_array($result)) {
header("Content-Length: " . $row[length] . "\n Content-Type: image/jpeg ");
echo "". $row[length] ."";
echo "" . $row[type] . "";
echo "" . $row[content] . "";
//wanneer de gegevens zijn opgehaald echo alles!
}
mysql_close($db);
}
else{
echo"jaja".$_GET['id']."blabla";
}
?>
/* image.php */
if (!empty($_GET['id'])) {
include("config.php");
//Haal gegevens op uit de db
$sql = "SELECT type,length,content FROM images WHERE id = '" .$_GET['id']. "' LIMIT 1";
$result = @mysql_query($sql) or Die(mysql_error());
while ($row = mysql_fetch_array($result)) {
header("Content-Length: " . $row[length] . "\n Content-Type: image/jpeg ");
echo "". $row[length] ."";
echo "" . $row[type] . "";
echo "" . $row[content] . "";
//wanneer de gegevens zijn opgehaald echo alles!
}
mysql_close($db);
}
else{
echo"jaja".$_GET['id']."blabla";
}
?>
Je stopt toch geen plaatjes in een database.
Niet doen!!!!!