2014-06-23 5 views
0

파일을 업로드 할 수있는 웹 사이트를 만들고 나서 로컬 컴퓨터로 다운로드 할 수 있습니다. 나는 blob에 파일을 저장하고 파일의 크기와 파일의 MIME 유형을 저장함으로써 이것을 수행하고있다. 이제 예상대로 작동한다.MySQL 데이터베이스에서 PHP로 원래 형식으로 BLOB 다운로드

지금 내가하고 싶은 것은 그 데이터 블록을 다운로드하여 원래 형식으로 복원하는 것입니다. 예를 들어 test.docx 파일을 데이터베이스에 업로드 한 경우 이전에으로 test.docx를 다운로드 할 수 있습니다.

나는 그것을 다운로드 할 수 있도록 관리하고 있는데, 문제는 내가 페이지에서 HTML을 다운로드하고 블롭이 빈 (기호가 많음)이라는 것입니다.

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; 

} 

문제.

이 웹 사이트를 개발하기 위해 내 OS로 Ubuntu를 사용하고 있는데, 영향을 줄 수 있습니까? 또한 파일을 다운로드 할 때 어떤 형식으로도 다운로드하지 않습니다.

데이터는 당신이 당신에게 도움이 될 수있는 추가 정보가 필요한 경우

<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Ã[email protected]ïƒýƒÑ½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õ¯^~¤”?|[email protected]\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< 

알려주세요 다운로드되는 : D 데이터를 확인 보인다

+0

파일을 데이터베이스에 BLOB으로 저장하는 이유는 무엇입니까? 그것은 거의 의미가 없습니다. 파일을 서버에 파일로 저장 한 다음 파일 이름을 데이터베이스에 저장하십시오. – Styphon

+0

많은 파일을 처리하고 싶을 때 더 유용할까요? 그런 다음 다운로드 할 수 있습니까? 내가 뭘하려고하는 것처럼? – Steve

+0

예, 예. 태그를 사용하여 파일에 직접 링크하거나, 직접 링크를 볼 수 없도록하려면 download.php로 링크 할 수 있지만 download.php 파일을 열고 읽은 다음 이미하고있는 것처럼 출력하십시오. – Styphon

답변

0

을; 이미

그래서 무엇 싶어 할 것은 태그를 시작 HTML이 위를 출력 을 배치하는 것입니다 다른 에코/인쇄이 있다면 당신은) 헤더를 (보낼 수없는 기억 일부 이진 데이터의 단지 ASCII/UTF8 해석입니다 끝에 그것을 죽이기();

+0

네, 그걸 알고 출력 버퍼링이 켜져 있습니다. – Steve

관련 문제