Friday, 13 September 2013

using fopen to open file in database

using fopen to open file in database

I have PHP code for downloading file from mysql database. Im trying to
buffer my download into chunk each chunk 1024. But its look fopen can't
open my file from the database it give error. "Warning: fclose() expects
parameter 1 to be resource, boolean given in
/var/www/html/download/get_file_work.php on line 40" How to open file in
database using fopen function.
My php code
<?php
ob_start();
$company = $_GET['company'];
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
if($id <= 0)
{
die('The ID is invalid!');
}
else
{
$dbLink = new mysqli('localhost', 'sqldata', 'sqldata', 'balhaf');
if(mysqli_connect_errno())
{
die("MySQL connection failed: ". mysqli_connect_error());
}
$query = "SELECT mime, name, size, data FROM $company WHERE id = $id";
$result = $dbLink->query($query);
if($result)
{
if($result->num_rows == 1) {
$row = mysqli_fetch_assoc($result);
$size = $row['size'];
$filename = $row['name'];
$data = $row['data'];
$mime = $row['mime'];
if ($fd = fopen ($data, "r")) {
ini_get('zlib.output_compression');
ini_set('zlib.output_compression', 'Off');
header('Content-Type: application/pdf');
while (@ob_end_clean());
header('Content-Disposition: attachment; filename='.($filename));
header('Content-Length:'.($size));
while(!feof($fd)) {
$buffer = fread($fd, 1024);
echo $buffer;
}
}
fclose ($fd);
exit;
}
else
{
echo 'Error! No image exists with that ID.';
}
mysqli_free_result($result);
}
else
{
echo "Error! Query failed: <pre>{$dbLink->error}</pre>";
}
mysqli_close($dbLink);
}
}
else
{
echo 'Error! No ID was passed.';
}
?>

No comments:

Post a Comment