我將文件存儲在MySQL中的LONGBLOB字段中。當我使用PHP檢索文件時,它在文件的開頭有一個額外的空間。我在MySQL Workbench查看器中檢查了我的blob數據,額外的空間不在原始數據中。我下載的每個文件在開始時都有一個額外的空間。該空間不存在於$ file ['file']變量中,我已將它寫入日誌並進行檢查。它被添加到PHP和瀏覽器之間的交接處。PHP文件下載在文件起始處添加額外空格
這裏的PHP:
<?php
include("log.php");
$log = new log;
$dbserver='localhost';
$dbid='xxxx';
$dbpw='xxxx';
$dbname='xxxx';
$mydb=mysqli_connect($dbserver,$dbid,$dbpw);
mysqli_set_charset($mydb,'utf8');
mysqli_select_db($mydb, $dbname) or die($log->log("Unable to select database"));
$q = "SELECT * FROM files WHERE id=$fileID";
$r = mysqli_query($mydb, $q) or die ($log->log(mysqli_error($mydb) . $q));
$file = mysqli_fetch_array($r, MYSQLI_ASSOC);
header("Content-Type: {$file['fileType']}");
header("Content-Disposition: filename=\"{$file['fileName']}\"", true);
header("Content-Length: {$file['fileSize']}");
echo trim($file['file']);
?>
我看到其他人識別UTF-8編碼的PHP頁面或BOM上多餘的空格,但我能找到一點也不像我的網頁上。 我使用記事本++和UTF-8不帶BOM。我也嘗試通過終端在服務器上使用vim創建一個新文件,而且沒有任何改變。 修剪也沒有幫助。 我用記事本++來「顯示所有字符」,希望能夠在某處找到額外的東西,並且看起來沒有隱藏在我的文件中的任何額外字符。 PHP開放克拉是文件的第一個字符,並且關閉克拉是文件的最後一個字符。
還有什麼?
感謝, Bernn
它可能與\ n有關嗎? – motto 2015-04-02 15:41:21
嘗試刪除\ n ....沒有幫助。 – Bernn 2015-04-02 16:54:09