這是我無法弄清楚的一個問題:我已經在網頁上成功構建了一個上傳功能,將文件上傳到MySQL數據庫。當我在服務器上並通過phpMyAdmin打開它們時,它們都看起來很好...... txt,jpg,pdf等。試圖通過PHP/MySQL下載Blob
然而,將這個東西(下面)放在一起下載後,我遇到了一個奇怪的問題:在將擴展名更改爲'txt'後,所有文本文檔(以及所有其他類型的文件)都包含頁面本身的HTML代碼,其後是原始內容!
此外,POST後不同的瀏覽器顯示不同。當試圖下載一個txt文件,IE將顯示在頁面本身(不下載)並顯示錯誤消息的ECHO正確的數據之前它:
警告:頭可能並不比一個頭含有較多,檢測到新行。在C:\ WAMP \ WWW \上線ACE \ dmain.php 82
82號線是 '標題(「內容長度的......'
無論是火狐瀏覽器也沒有顯示任何東西他們只是。讓我下載
下面的代碼:
<?php
if (isset($_POST['downloadid'])) {
$fileid = $_POST['downloadid'];
try {
$sql = "SELECT * FROM `datastore` WHERE `id` = '".$fileid."'";
$results = $pdo->query($sql);echo $sql;
while ($row = $results->fetch()) {
$filename = $row['filename'];
$mimetype = $row['mimetype'];
$filedata = $row['filedata'];
header("Content-length: strlen($filedata)");
header("Content-type: $mimetype");
header("Content-disposition: download; filename=$filename"); //disposition of download forces a download
echo $filedata;
// die();
} //of While
} //try
catch (PDOException $e) {
$error = '<br>Database ERROR fetching requested file.';
echo $error;
die();
} //catch
} //isset
?>
哎呀。您正在使用PDO和_still_不具有綁定參數,並且使自己容易受到SQL注入的攻擊。 **請**(爲了您自己的利益)在PDO上查看'bindValue'和'prepare'。在更改標題之前,您也是'echo'SQL。這將導致標題不被髮送,除非輸出緩衝被啓用。 – 2013-02-21 18:34:31
是啊...我是個壞男孩。這隻適用於一小部分員工的內部使用,但我明白了。將重寫那個。 – 2013-02-21 18:41:46
即使在內部使用也很重要。沒有太多阻止員工離開時造成一些損害,如果這是代碼的編寫方式!我只是想幫助你。但是你的內部組織比你更瞭解我。 – 2013-02-21 18:43:49