|
Help with upload and downloading images
the code to upload images/files
<form method="post" enctype="multipart/form-data"> <table width="350" border="0" cellpadding="1" cellspacing="1" class="box"> <tr> <td width="246"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000"> <input name="userfile" type="file" id="userfile"> </td> <td width="80"> <input name="upload" type="submit" class="box" id="upload" value=" Upload "> </td> </tr> </table> </form> $uploadDir = 'uploads/';
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$filePath = $uploadDir . $fileName;
$result = move_uploaded_file($tmpName, $filePath);
if (!$result) {
echo "Error uploading file";
exit;
}
$hostname_conndb = "localhost";
$database_conndb = "utpoia";
$username_conndb = "root";
$password_conndb = "qaasim11";
$conndb = mysql_connect($hostname_conndb, $username_conndb, $password_conndb) or trigger_error(mysql_error(),E_USER_ERROR);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}
$sql = "INSERT INTO upload2 (name, size, type, path ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$filePath')";
mysql_select_db($database_conndb, $conndb);
$result = mysql_query($sql, $conndb) or die(mysql_error());
echo "<br>File $fileName uploaded<br>";
}
This works fine and uploads images to the database and to the uploads folder.
I cannot download the image/files
The code for download is
if(isset($_GET['id']))
{
// if id is set then get the file with the id from database
$hostname_conndb = "localhost";
$database_conndb = "utpoia";
$username_conndb = "root";
$password_conndb = "qaasim11";
$conndb = mysql_connect($hostname_conndb, $username_conndb, $password_conndb) or trigger_error(mysql_error(),E_USER_ERROR);
$id = $_GET['id'];
$query = "SELECT name, type, size, content " .
"FROM upload WHERE id = '$id'";
$result = mysql_query($query) or die('Error, query failed');
list($name, $type, $size, $content) = mysql_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;
exit;
}
<html>
<head>
<title>Download File From MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$hostname_conndb = "localhost";
$database_conndb = "utpoia";
$username_conndb = "root";
$password_conndb = "qaasim11";
$conndb = mysql_connect($hostname_conndb, $username_conndb, $password_conndb)
or trigger_error(mysql_error(),E_USER_ERROR);
$sql = "SELECT id, name FROM upload";
mysql_select_db($database_conndb, $conndb);
$result = mysql_query($sql, $conndb) or die(mysql_error());
$rows = mysql_fetch_assoc($result);
$total_rows = mysql_num_rows($result);
?>
<?php if($total_rows > 0) { ?>
<?php do { ?>
<a href="download.php?id=<?php echo $rows['id']; ?>"><?php echo $rows['name']; ?></a> <br>
<?php } while($rows = mysql_fetch_assoc($result)); ?>
<?php
} else {
echo "<p>There are currently no images associated with this category.</p>";
}
?>
</body>
</html>
This is the code for the database:-CREATE TABLE IF NOT EXISTS `upload2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `type` varchar(30) NOT NULL, `size` int(11) NOT NULL, `path` varchar(60) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ; -- -- Dumping data for table `upload2` -- INSERT INTO `upload2` (`id`, `name`, `type`, `size`, `path`) VALUES (1, 'applications.png', 'image/x-png', 3456, 'uploads/applications.png');and other structure CREATE TABLE IF NOT EXISTS `upload` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `type` varchar(30) NOT NULL, `size` int(11) NOT NULL, `content` mediumblob NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; It passes the id but does not download the file. I am testing on local server Can you please tell me what is wrong with this code.
1 Answer
try use this after making db connection:
$hostname_conndb = \"localhost\";
$database_conndb = \"utpoia\";
$username_conndb = \"root\";
$password_conndb = \"qaasim11\";
$conndb = mysql_connect($hostname_conndb, $username_conndb, $password_conndb);
if(isset($_GET[\'id\'])) {
$id = intval($_GET[\'id\']);
$query = mysql_query(\"SELECT name,type,size,path
FROM `upload` WHERE id = \'$id\'\");
list($name, $type, $size, $path) = mysql_fetch_array($query);
if(file_exists($path)){
header(\"Content-length: $size\");
header(\"Content-type: $type\");
header(\'Content-disposition: attachment; filename=\'.$name.\'\');
header(\"Pragma: no-cache\");
header(\"Expires: 0\");
@set_time_limit(0);
$fp = @fopen($path, \'rb\');
if ($fp !== false)
{
while (!feof($fp))
{
echo fread($fp, 8192);
}
fclose($fp);
}
else
{
@readfile($path);
}
flush();
}else{
die(\'the file\'.$name.\'is non exist in \'.$path);
}
}this code will select the `path` and read the file and send it to the broser Posted: MacOS 1 of 2 people found this answer helpful. Did you? Yes No |
© Advanced Web Core. All rights reserved

