2015-09-09 89 views
0

我需要將一個zip文件作爲一個blob保存到我的mysql數據庫中。我一直在使用如何將php ZipArchive保存到MySQL blob?

$zip = new ZipArchive(); 
$zip->open('test.zip',ZipArchive::CREATE); 

zip存檔包含我創建並添加到壓縮

if($file = tmpfile()) {   
fputcsv($file, $headers); 
foreach($rows as $row) { 
       fputcsv($file, $row); 
} 

的CSV報告產生細(通過調試檢查)多個CSV文件,創建一個ZipArchive。然後我的CSV中添加使用

$zip->addFile($file_uri,'file_x'); 

的問題是,我似乎無法能夠得到壓縮內容到MySQL的BLOB存檔。我已經嘗試了readfile('test.zip')file_get_contents('test.zip'),但在這兩種情況下,我只是得到zip文件中的文件NAME(我認爲是)壓縮格式。

我正在使用cakePHP並且創建zip的函數是從終端運行的。我也無法以任何方式改變表格結構。無論如何,我還可以獲得我創建的ZipArchive的句柄?

回答

0

我找到了解決方案。其實這只是我真正的錯誤。儘管我使用了$zip->close(),但我的服務器仍然保留了zip文件。所以舊的zip文件是空的,只包含csv文件名,而不是我創建的新文件。

關閉壓縮文件後,我只需在代碼末尾輸入unlink('test.zip')(無論如何這都是很好的做法)。

我使用

$this->MyModel->saveField('data', file_get_contents('test.zip')); 

此外,一定要打電話$zip->close()數據庫保存以前保存的內容壓縮到我的MySQL的blob。否則file_get_contents將不起作用