...

View Full Version : Downloading mysql Blobs



Marcus Maximus
03-01-2007, 08:53 PM
I trying to download a BLOB from my web page i have successfully uploaded files to the database but when i'm downloading im encountering problems

showfiles.php that list al the files in the DB table (this works properly)

<?php
// Database connection variables
#connect to MySQL
$conn = @mysql_connect("***", "***","***")
or die("Could not Connect");

#select the specified database
$rs = @mysql_select_db("***", $conn)
or die("Could not select specified");

$dbQuery = "SELECT blobId, blobTitle, blobType ";
$dbQuery .= "FROM myBlobs ";
$dbQuery .= "ORDER BY blobTitle ASC";
$result = mysql_query($dbQuery) or die("Couldn't get file list");

?>

<a href="http://www.devarticles.com"><img border="0" src="http://www.devarticles.com/dlogo.gif"></a>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#111111" width="100%">
<tr>
<td width="34%" bgcolor="#FF9900" height="21">
<p style="margin-left: 10"><b><font size="2" face="Verdana" color="#FFFFFF">
Description</font></b></td>
<td width="33%" bgcolor="#FF9900" height="21">
<p style="margin-left: 10"><b><font face="Verdana" size="2" color="#FFFFFF">
Type</font></b></td>
<td width="33%" bgcolor="#FF9900" height="21">
<p style="margin-left: 10"><b><font face="Verdana" size="2" color="#FFFFFF">
File</font></b></td>
</tr>

<?php
while($row = mysql_fetch_array($result))
{
?>

<tr>
<td width="34%" bgcolor="#FFDCA8" height="21">
<p style="margin-left: 10; margin-right: 10">
<font face="Verdana" size="1">

<?php echo $row["blobTitle"]; ?>

</font>
</td>
<td width="33%" bgcolor="#FFDCA8" height="21">
<p style="margin-left: 10">
<font face="Verdana" size="1">

<?php echo $row["blobType"]; ?>

</font>
</td>
<td width="33%" bgcolor="#FFDCA8" height="21">
<p style="margin-left: 10"><font face="Verdana" size="1">

<a href="downloadfile.php?fileId=<?php echo $row["blobId"]; ?>">

Download now
</a></font>
</td>
</tr>

<?php
}
echo "</table>";
?>


downloadfile.php causes me problems it outputs the error Invalid blobId specified

<?php
global $blobId;

if(!is_numeric($blobId))
die("Invalid blobId specified");

// Database connection variables
#connect to MySQL
$conn = @mysql_connect("****", "***","***")
or die("Could not Connect");
#select the specified database
$rs = @mysql_select_db("***", $conn)
or die("Could not select specified");

$dbQuery = "SELECT blobType, blobData ";
$dbQuery .= "FROM myBlobs ";
$dbQuery .= "WHERE blobId = $blobId";
$result = mysql_query($dbQuery) or die("Couldn't get file list");

if(mysql_num_rows($result) == 1)
{
$fileType = @mysql_result($result, 0, "blobType");
$fileContent = @mysql_result($result, 0, "blobData");

header("Content-type: $fileType");
echo $fileContent;
}
else
{
echo "Record doesn't exist.";
}

?>

Arragon
03-02-2007, 05:09 PM
The error that I see is that your showfiles.php script is using "fileId" as the variable name:

<a href="downloadfile.php?fileId=<?php echo $row["blobId"]; ?>">


in downloadfile.php you are checking for the variable "blobId":

if(!is_numeric($blobId))
die("Invalid blobId specified");

The fact that you are relying on register globals makes my skin itch a little too, but I will make the assumption that you know about the security implications and that you know what you are doing.

Cheers



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum