File : download.php. ID : 7103
Skin : Default | Sons-of-obsidian | Sunburst | Highlighter | Frame
<? 
/*
ปรับปรุง : 2549-06-01 
ประกอบด้วย uploadpage.htm, uploadprocess.php และ download.php
Source from http://php.dreamwerx.net/forums/viewtopic.php?t=6
Download script.. streams data from a mysql database, thru the webserver to a client browser 
*/
if (isset($_GET["id"])) { 
$Storage_IP = "localhost"; 
$Storage_Port = 3306; 
$Storage_User = "root"; 
$Storage_Passwd = ""; 
$Storage_DB = "test"; 
$connectto = $Storage_IP . ":" . $Storage_Port; 
if (!$linkid = @mysql_connect($connectto, $Storage_User, $Storage_Passwd)) { 
die("Unable to connect to storage server!"); 
} 
if (!mysql_select_db($Storage_DB, $linkid)) { 
die("Unable to connect to storage database!"); 
} 
$nodelist = array(); 
// Pull file meta-data 
$SQL = "select * from file where id = " . $_GET["id"]; 
if (!$RES = mysql_query($SQL, $linkid)) { 
die("Failure to retrive file metadata"); 
} 
if (mysql_num_rows($RES) != 1) { 
die("Not a valid file id!"); 
} 
$FileObj = mysql_fetch_object($RES); 
// Pull the list of file inodes 
$SQL = "SELECT id FROM filedata WHERE masterid = " . $_GET["id"] . " order by id"; 
if (!$RES = mysql_query($SQL, $linkid)) { 
die("Failure to retrive list of file inodes"); 
} 
while ($CUR = mysql_fetch_object($RES)) { 
$nodelist[] = $CUR->id; 
} 
// Send down the header to the client 
Header ( "Content-Type: $FileObj->datatype" ); 
Header ( "Content-Length: " . $FileObj->size ); 
Header ( "Content-Disposition: attachment; filename=$FileObj->name" ); 
// Loop thru and stream the nodes 1 by 1 
for ($Z = 0 ; $Z < count($nodelist) ; $Z++) { 
$SQL = "select filedata from filedata where id = " . $nodelist[$Z]; 
if (!$RESX = mysql_query($SQL, $linkid)) { 
die("Failure to retrive file node data"); 
} 
$DataObj = mysql_fetch_object($RESX); 
echo $DataObj->filedata; 
} 
} else { 
echo "<form action=download.php method=get><input name=id value=1><input type=submit></form>"; 
} 
?>