2017-06-06 62 views
1

我必須在我的數據庫中存儲大量文檔,並且我設法使其能夠使用PDF。 當我嘗試上傳JPG或GIF的例子時,內容沒有顯示,當我從下面的下載功能重新下載。PHP LongBlob上傳/下載不適用於圖片

下載功能:

public function downloadFile($id) { 
    if($id!=null){ 
    $sql = "SELECT * FROM document WHERE id = ?"; 
    $stmt = $this->db->prepare($sql); 
    $stmt->bindValue(1, $id); 
    $stmt->execute(); 
    foreach ($stmt as $row) { 
     header("Content-length:".$row['taillefichier']); 
     header("Content-type:" . $row['typefichier']); 
     header("Content-Disposition: attachment; filename=".$row['nomfichier']); 
     echo $row['fichier']; 
    } 
    } 
+0

*「當例如,我嘗試上傳JPG或GIF,內容沒有顯示,當我重新下載它。「* - 問題是;是否有任何內容上傳到數據庫開始?你還在檢查錯誤嗎? –

+0

...如果有內容發送到數據庫,與文件源相比,大小是多少? –

+0

是的,我可以從MySQL Blob字段下載它,但是我的PHP下載功能似乎不起作用,它在使用下載功能試圖打開它時總會顯示內容錯誤,尺寸爲209942 MySQL表和205000 blob字段 – Kryze

回答

1

所以,我找到了答案,以我自己的問題,我會在這裏發佈更新的功能

public function downloadFile($id) { 
    if($id!=null){ 
    $sql = "SELECT * FROM document WHERE id = ?"; 
    $stmt = $this->db->prepare($sql); 
    $stmt->bindValue(1, $id); 
    $stmt->execute(); 
    foreach ($stmt as $row) { 
     header("Content-length:".$row['taillefichier']); 
     header("Content-type:".$row['typefichier']); 
     header("Content-Disposition: attachment; filename=".$row['nomfichier']); 
     header("Content-type:".$row['typefichier']); 
     ob_clean(); 
     flush(); 
     echo $row['fichier']; 
    } 
    } 
} 

查看更多在這裏:https://stackoverflow.com/a/31318718/7295677