I have a PHP script that locates a photo in a MySQL database and based on the path /filename stored in the database, retrieves the file and downloads it via the browser, the problem is that it saves as a filename that is the url with no extension.
so we pass : dlfile.php?id-10 the script is supposed to get the filename from the stored file and download it with that filename but it downloads the file as 'dlfile?id=10' instead of PIC76534.jpg. where am i going wrong? code below for dlfile.php.
or is there a way to ask the user to select a filename when downloading? I know the script is crude but have had it for ages.
<?php
require( '../js/db.php' );
$id = $_GET[ 'id' ];
$sql = "SELECT * FROM image_archive WHERE id = " . $id;
$result = mysqli_query( $conn, $sql );
if ( !$result ) {
echo "ERROR: " . mysqli_error( $conn );
} else {
$row=mysqli_fetch_assoc($result);
//path to the picture you're wanting the viewer to download
$path = "/archimages/".basename($row['pic_OriginalPath']);
if ( file_exists( $path ) ) {
//split the extension and name from eachother
$e = explode( '.', $path );
//get the name of the file
$file_name = $e[ 0 ];
//image extension
$extension = $e[ 1 ];
// Send a header saying we'll be displaying a picture
header( 'Content-type: '.$row['pic_Type'] );
// Name the file
header( 'Content-Disposition: attachment; filename="' . $file_name . $extension . '"' );
// Path to the picture you're wanting the user/viewer to download
readfile( $file_name . '.' . $extension );
} else {
echo 'The requested image does not exist.'.$path.'<hr>';
}
}
?>