douyong1974 2014-06-23 11:17
浏览 90

使用PHP将Blob从MySQL数据库下载到其原始格式

I'm trying create a website where you can upload a file and afterwards you can download it to your local computer. I'm doing this by storing the the file in a blob and also storing the size of the file and the mime type of the file as well, now this is working as expected.

What I want to do now is to download that blob of data and restore it to its original format. For example if I uploaded a test.docx file in the database I can download test.docx as it was before.

I am managing to make it download but the problem I'm having is that it's downloading the HTML in the page and the blob is a bin (A lot of symbols).

Download.php

<html>
<head>
    <title>Download File From MySQL</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$dbUser = "root";
$dbPassword = "root";
$dsn ='mysql:host=localhost;dbname=filerepository';

$dbh = new PDO($dsn,$dbUser,$dbPassword);

$query = "SELECT ID,Title FROM FoldersFiles";
foreach($dbh->query($query,PDO::FETCH_ASSOC) as $row)
{
?>
        <a href="download.php?id=<?php echo $row['ID'];?>"><?php echo $row['Title'];?></a> <br>
<?php
}

if(isset($_GET['id']))
{
    $query2 = "SELECT Title,Format,Content,FileSize FROM  FoldersFiles WHERE ID = ?";
    $sth = $dbh->prepare($query2);
    $sth->execute(array($_GET['id']));
    $result =  $sth->fetchAll(PDO::FETCH_ASSOC);
    foreach($result as $row)
    {
        $size = $row['FileSize'];
        $type = $row['Format'];
        $title  = $row['Title'];
        $content = $row['Content'];
    }
    require_once('/var/www/uploadFile/downloadFile.php');
    Download($size,$type,$title,$content);
}

?>
</body>
</html>

downloadFile.php

<?php
function Download($size,$type,$title,$content)
{

        header("Content-Length: $size");
        header("Content-Type: $type");
        header("Content-Disposition: attachment; filename=\"$title\"");

        echo $content;

}

I have split them because there was a similar problem where he fixed it by doing that but I still am having the problem.

I am using Ubuntu as my OS to develop this website, might this affect it? Also when I download the file it doesn't download in any format.

Data being downloaded

<html>
<head>
    <title>Download File From MySQL</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
        <a href="download.php?id=46">Main</a> <br>
        <a href="download.php?id=65">ICE</a> <br>
        <a href="download.php?id=66">PHP</a> <br>
        <a href="download.php?id=67">National Diploma Year 2</a> <br>
        <a href="download.php?id=68">National Diploma Year 1</a> <br>
        <a href="download.php?id=73">Semester 1</a> <br>
        <a href="download.php?id=74">Object Orient Programing</a> <br>
        <a href="download.php?id=75">Presentations</a> <br>
        <a href="download.php?id=76">Homework</a> <br>
        <a href="download.php?id=106">test</a> <br>
        <a href="download.php?id=108">test</a> <br>
        <a href="download.php?id=109">Main</a> <br>
        <a href="download.php?id=111">File Repository</a> <br>
        <a href="download.php?id=114">Documentation</a> <br>
        <a href="download.php?id=115">Documentation</a> <br>
        <a href="download.php?id=125">test</a> <br>
PK\0\0\0\0\0!\02‘oWf\0\0¥\0\0\0[Content_Types].xml ¢( \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0´”ËjÃ0E÷…þƒÑ¶ØJº(¥ÄÉ¢ehúŠ4NDõB£¼þ¾ã81¥$14ÉÆ ÏÜ{Ï1ƒÑÚšl  µw%ë=–“^i7+Ù×ä-d&á”0ÞAÉ6€l4¼½L60#µÃ’ÍS
Oœ£œƒXø\0Ž*•V$:ÆB~‹ðû^ïK︔§Úƒ
/P‰…IÙëš~7$²ì¹i¬³J&B0ZŠDu¾têOJ¾K(H¹íÁ¹xG
ŒL¨+Çvººš¨dcÓ»°ÔÅW>*®¼\\XR§mpúªÒZ}í¢—€HwnMÑV¬ÐnÏ”Ã-ì\")/ÒZwB`ÚÀË4¾Ýñ    ®°sîDXÁôój¿Ì;A*ʈ©Ëc´Ö‰Ö\04ßþÙ[›S‘Ô9Ž> ­•ø±÷{£Vç4p€˜ôéW×&’õÙóA½’¨Ù|»d‡?\0\0\0ÿÿ\0PK\0\0\0\0\0!\0‘·ï\0\0\0N\0\0\0_rels/.rels ¢( \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0¬’ÁjÃ0@ïƒýƒÑ½QÚÁ£N/cÐÛÙ[ILÛØj×þý<ØØ]éaGËÒÓ“ÐzsœFuà”]ð–U
Š½  Öù^Ã[û¼x\0•…¼¥1xÖpâ›æöfýÊ#I)ʃ‹YŠÏ‘øˆ˜ÍÀå*Döå§i\")ÏÔc$³£žqU×÷˜~3 ™1ÕÖjH[{ª=E¾†ºÎ~
f?±—3-ÂÞ²]ÄTꓸ2j)õ,l0/%œ‘b¬
ð¼Ñêz£¿§Å‰…,    ¡   ‰/û|f\\ZþçŠæ?6ï!Y´_áoœ]Aó\0\0ÿÿ\0PK\0\0\0\0\0!\0³¾‹\0\0¶\0\0\0word/_rels/document.xml.rels ¢( \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0¬“ÍjÃ0„ï…¾ƒØ{-;mC   ‘s)\\[÷d{ýCõc¤MZ¿}EJ‡ÓƒŽ3bg¾…Õzó­; ó½5²$†¦²uoZÅöá˜\'ij©¬A#zØä÷wë7T’ÂïúÁ³b¼€ŽhXqô‰Ð„—Æ:-)H×òAVŸ²E¾HÓ%wÓȯ2Ù®àvõ#°bð?Ù¶iú
_mµ×hèF÷H6ó!SºIÀÉIBðÛ‹¨4*œõ\\}³Þìu‰.l|!8[s˘fñp”¿f6Çð“¡±†
Yª  ÇÙšƒxŠ  ñ…åûŸ“œ˜\'~õÛò\0\0\0ÿÿ\0PK\0\0\0\0\0!\0K”¸ÄÅ0\0\0ž4\0\0\0\0word/document.xmlì}ëŽã¶¶æÿæ„š?`\'-RÔ­æ$gtMé=éN‚ó+PÙ¬²vÛ’¤êJå×~Œ3Àpžå<Ê~’!)Ë%«lëbٖ啽Ñ*S²Lr}ëÊÅÅù×?séMÒ0Ž¾½AßÈ7&ñ4Œ¾½ùõ“ÿµq#¥YMƒyÑoožizó¯ßý÷ÿö/O·Óxò¸ Q&±WDéíÓròíÍ,Ë–·oߦ“]é7‹p’Äi|Ÿ}3‰oãûûpBß>ÅÉô-–‘,þZ&ñ„¦)û=\'ˆ¾éÍêu‹×o‹—4b7ïãddìcòðv$Ÿ—_³·/ƒ,¼çaöÌÞ-kÅkâoo“èvõŠ¯×â_¹Í;´ºßHšünþw5âß&tÎúGé,\\¾£ëÛØÍYñ’/ûñe1/ž{Z\"r
Ü$xb——6éþ4ÿÒbž÷|ÿ‘Ü€\"üëo4éÂæo=Yaôòæ¦4¹Hm÷\\}Áòá0â|ŸÄË—·…‡½í]ôyý.ÎÙ-Þµ\"ryhéaù8–Œ“ÛwQœwsÖ#F2‰ÍºÄa}ó“8wñô™_—¬™Ü.ƒ$x7ýöF³LKÖ-óF´fôÏŒ·ê«ÿXë-“nÓ_¾½‘eOG²j­›>$¼ÑT0Bںѥ÷Áã<{ýø‡R“èŇ„_Òe0a#`÷åoä_˜‡|N1Yøå‘)xÌâ›·ükŸ°_‚ù·7Æó4É[“ü‰GYÊ_™NBFçô!¦Ò¯ïøËhfVßÞ|
4•~¦OÒ/ñ\"ˆøÍ™¥•ç\'ié³ø‘ô¯â§1)Zþk¥¶·«¾¼]3Ù:k\'ëô]þ¯“Šë$žÇ¼C¢Ç²ø¯:6E{=¶¼­ÛÓ­Ð]‚‚Œ6Ë„¦4ùBo¾ói=²O4Ë¿OÅNôq”œ}Ñã\"ÿ#œ™¯\'$9»÷nZ´¡ÕÈ×_èˆ[>Bk>DBõ¯^~¤”?|B7@\0V¶ [´
ݽŒ†cõ×å<¦Íqkn·À­?Eíë\0r¹@î‡$üÎéMß| éÓ[:
³¯šÃØŒ\0cæ%ŒªÃÄü·pÞÃ`0|~owæœxÁ©•Jq$e3*ÝÇó)MR)ˆ¦RÂlãéù\0v\0û,æ ¤y¸³€G9¼i0™I÷ß4†³ÍÉp8ŸÎ>³¡¥e/i’…Ì–¾çŸÓð/Úܱ`°<,\'ôKÈWUSéÍ$^2HKñ½ÄlI {µäš¶@7îݲG,Ïtº›£{»•ý>~xà¤Þ€siÌuà¼<&¾ge®²„    –¶0»”þ™T0s?Ìü+»J¿Ð‡0Írd7wmÀ`Åû)ˆ‚*’ªò°ôñ9Íè¢9œU€3Ày¨rZ`<}¼K\'I¸l)§94Ø\0쳯;Ñ ™Ì]›C—ƒô‚2ýNB.9}{\'Ùè’EÖœºhÃ\'¹o¾4n]†“L \"ˆ&³8Y£ÅÐtFÂ/·    e÷CÖúÇŸü\'þ‘ŒU¾àY¤ó†Ólv+ÿÏ
fÙ-úF]f7R|;K.ž×‰°¢)ÍØkV·ÅÌÕž‹a|{ó?™ÿ¿8‰?SöàýªŸ¼ƒDG!ˆ#‹>4É‘Ý®Ówù¿\'ÉÈ手ôöàÓZñjØ`ÝÚý¥cóHÚ$ˆ¤IBƒŒò”0‘â§Hzà›yšzðÙ®\0è«\0´W¤˜HOÌ “fÁZúk¦ÜB~KO3š°6*@ÜŸ†÷÷¬6XÄì2¥Kñͦ<}e?I‹Gö~ö•eðÜf9eðY´ÀWÁ<\"—Jƒ}šÅ rXÇÍ9†g2,‘Îøƒ¬eÁX(›IK/ç´êw>z˜—†ÁÝ>ºq³ËG×食+Ñöš|t‡|tðÑ‹ÖCvMÝ×X{9ƒÏÖ,$+ØlC„vo6Û»{é9~\\YcÁjˆ0Ÿ&¾—B6\0žå•ïIïÖÛG¸Ç¿2•8¥ANØwž›ãÿùœ€À\'ŸEòE1‰ ó,aÏ%¸g¯§æ“ÿ%NKÍŸ¥GQe€1Ë„&YFy\"d^G
Ëû¬š{3ÎàS\"®Jäy5wÌC…¿Rüžˆx=ÐLŠâ,¼™ï™‚x–&³ z`Ýg_ 3¡2¸a¯Zo;œË%Z°Åà*-®‚-~PŸB7`¬±Þ-.±ùûcÊ0/-ã%S<ú   f™ÇL\'´@üàs.ñWø)]2<

Please tell me if you need any more information that might help you :D

  • 写回答

1条回答 默认 最新

  • doushi1974 2014-06-23 11:24
    关注

    that data seems ok; it's just the ascii/utf8 interpretation of some binary data remember that you cannot send header() if there was already any other echo/print

    so what you wanna do is to place that output above that html start tag end end it with a die();

    评论

报告相同问题?

悬赏问题

  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化