----- Original Message -----
From: "zarilahr"
Dear Sirs
i put up a image in database and i want when a user click on
download link the particular image start to download. I have stored
100 images in mysql and below is the sample mysql query i write and
its work fine .
INSERT INTO `mobile`.`stuff` (`prod_id`, `cat_id`, `image_name`,
`image_path`)
VALUES (NULL, '3', 'Impossible ', 'impossible.jpg');
"please note that prod_id is auto increment."
and here is the php code how i called my all images with the help of
while loop from mysql.
echo '<td>' . '<img src="images/' . $row['image_path'] . '"
border="0">' .
'<br>' . $row['image_name'] . '</a> <br />' . '<a href="images/?
id "> Download </a>' . '</td>';
i want to start download the particular image when i click on the
Download link. Please tell me the code how i can download the image
when i click on Download link.
A screent shot with the name of imagedownlod is attached which can
clarify what exactly i want.
regards
Azhar
------------------------------------
NOTE: I am a php newbie - so please anyone that sees a mistake or security
problem then please say so.
Hi Azhar,
It looks like you already have a script for the image
download -
'<a href="images/?id "> Download </a>'
Anyway - place the following at the absolute beginning of the page that
displays the images.
<?php
if(isset($_GET['img']))
{
if(download_img($_GET['img']))
{
die();
}
}
function download_img($image_filename)
{
$path_parts = pathinfo($image_filename);
$dirname = $path_parts['dirname'];
if(($dirname != "") && ($dirname != ".")) return FALSE;
$ext = $path_parts['extension'];
$permitted = "jpg jpeg png gif bmp";
$permitted = explode(" ", $permitted);
foreach($permitted as $this_ext)
{
if($ext = $this_ext)
{
return output_img($path_parts['basename']);
}
}
return FALSE;
}
function output_img($filename)
{
if(!file_exists("images/" . $filename))
{
//echo("[" . $filename . "] Does not exist<br>\n");
return FALSE;
}
if(!is_readable("images/" . $filename))
{
//echo("[" . $filename . "] Is not readable<br>\n");
return FALSE;
}
header("Cache-Control: public, must-revalidate");
header("Pragma: hack");
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($filename));
header('Content-Disposition: attachment; filename="' . $filename . '"');
header("Content-Transfer-Encoding: binary\n");
readfile("images/" . $filename);
return TRUE;
}
?>
----------------------------------
'<a href="images/?id ">
----------------------------------
and then change the above html to -
-----------------------------
'<a href="' . $_SERVER['PHP_SELF'] . '?img=' . $row['image_name'] . '">'
-----------------------------
Notes:
URL no longer contains path information for security. All images must be in
a subfolder (images/) from where the script is running.
To change this to an absolute path then in output_img change the three
"images/" to "/new_path/"
Thanks, Robert.