download image from mysql using php
//You can save this to test.php and call it with test.php?id=1 for example
<?php
//Database class with PDO (MySQL/MariaDB)
require_once("database.php"); //If you need this, write to [email protected] i'll send you the db class
//Connect to database
$database = new Database();
$pdo = $database->dbConnection();
//Get ID from GET (better POST but for easy debug...)
if (isset($_GET["id"])) {
$id=(int)$_GET["id"];
} else {
echo "Wrong input";
exit;
}
//Prepare PDO SQL
$q = $pdo->prepare("SELECT * FROM `table_with_image` WHERE `id`=:p_id");
//Add some data
$q->bindparam(":p_id", $id); //Filter user input, no sanitize necessary here
//Do the db query
$q->execute();
//If something found (always only 1 record!)
if ($q->rowCount() == 1) {
//Get the content of the record into $row
$row = $q->fetch(PDO::FETCH_ASSOC); //Everything with id=$id should be in record buffer
//This is the image blob mysql item
$image = $row['image'];
//Clean disconnect
$database->disconnect();
//Now start the header, caution: do not output any other header or other data!
header("Content-type: image/jpeg");
header('Content-Disposition: attachment; filename="table_with_image_image'.$id.'.jpg"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($image));
//Output plain image from db
echo $image;
} else {
//Nothing found with that id, output some error
$database->disconnect();
echo "No image found";
}
//No output and exceution further this point
exit();