Dag mensen,

Ik heb een tutorial gevolgd, Waarmee je een afbeelding bestand kan uploaden naar je database als BLOB bestand. het uploaden naar de database gaat prima. Het probleem ligt bij het uitlezen van het BLOB bestand.

Er is gebruik gemaakt van 3 php pagina's:
index.php
get.php
connect.php

Als eerst index.php
bestaat uit een formulier waar je het bestand kan kiezen dat je wilt uploaden:


<?php
// connectie maken met database
include('connect.php');
error_reporting(E_ALL ^ E_NOTICE); ?>

<html>
<head>
<title>Uploaden van een afbeedling</title>
</head>
<body>

<form action="index.php" method="post" enctype="multipart/form-data">
Bestand: <input type="file" name="image" /> <input type="submit" value="Upload" />
</form>

<?php

// bestand propeties
$file = $_FILES['image']['tmp_name'];

// kies een afbeelding om te uploaden
if (!isset($file))
echo "kies een afbeelding";
// uploaden van de afbeedling naar databse
else
{
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);

if ($image_size==FALSE)
echo "Dit bestandstype is geen afbeelding";
else
{
if (!$insert = mysql_query("INSERT INTO store VALUES ('','$image_name','$image')"))
echo "probleem met het uploaden van de afbeelding";
else
{
$lastid = mysql_insert_id();
echo "Image uploaded.<p />your image:<p /><img src=\"get.php?id=$lastiid\">";

}
}
}

?>
</body>
</html>

Pagina get.php moet dus de afbeelding pakken met het id dat is megegeven:

<?php

// id aanvragen
$id = addslashes($_REQUEST['id']);
// afbeelding pakken die gelijk is aan het id dat zojuist is geupload.
$image = mysql_query ("SELECT * FROM store WHERE id=$id");
$image = mysql_fetch_array($image);
$image = $image['image'];

header("Content-type: image/jpeg");
// laten zien van afbeelding met het id dat is gepakt!
echo $image

?>

in connect.php word de connectie met de database gemaakt.

Uploaden naar database gaat dus goed maar het uitlezen van de afbeelding lukt niet.

Gr Koen
Hoe schrijf je de bestand weg na de database?
Betreft dat de hele pad waar het bestand staat?

Zo nee, dan zal je op regel 12 van script hier boven wel even je pad aan moeten geven waar het staat. Dat doe je nu namelijk niet.

Tevens:
1. Pas goede foutafhandeling toe.
2. Pas op voor SQL-injection. Je script is daar nu gevoelig voor.
3. Zet deze eens boven je script.
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest
?>
@Frank
TS geeft aan dat hij het als een BLOB in de DB zet. Dat betekent dat alle bits in je database komen en dat er dus als zodanig geen file meer in een directory staat. Een compleet pad is hier dus niet aan de orde.

Maar Koen, waarom wil je dit? Persoonlijk heb ik nog nooit een goede reden gevonden om plaatjes in de DB op te slaan. Dus bedenk waarom je het wil en waarom je niet gewoon het plaatje opslaat als bestand in een directory en alleen een referentie (pad, bestandsnaam, id o.i.d) in je database.
@Erwin H, De reden weet ik ook niet eigenlijk haha, ik heb voor school een soort gelijke opdracht, waarbij je plaatjes moet kunnen toevoegen. Ik ben gaan zoeken op youtube naar tutorial hoe je hebt afbeeldingen moest uploaden en kon terug vragen via een database. Maar begrijp nu dat je beter het Pad kan aangeven in je db en dan het plaatje gaat terug vragen.

Bedankt, topic kan weg!

Reageren