2017-10-11 112 views
4

我想在將壓縮文件發送到數據庫之前先用php壓縮。通過php壓縮本地文件,然後將其存儲在數據庫中

一個解決方案

$statement = $pdo->prepare('INSERT INTO test(datablob) VALUES(?);'); 
$data = gzcompress(file_get_contents('file.txt')); 
$statement->bindParam(1,$data,PDO::PARAM_LOB); 
$statement->execute(); 

但我不希望文件讀入到內存中。如果沒有壓縮它會是什麼樣子:

$statement = $pdo->prepare('INSERT INTO test(datablob) VALUES(?);'); 
$data = fopen('file.txt'); 
$statement->bindParam(1,$data,PDO::PARAM_LOB); 
$statement->execute(); 

我怎麼能在PHP壓縮本地可用的文件以將其添加到數據庫中(不存儲在內存中的內容)?

我在想一個關於將文件流封裝到壓縮流中的解決方案,並將此「壓縮」流句柄綁定到PDO語句。但是,這將如何?

回答

3

我發現自己用PHP/stream_filters一個簡單的解決方案:

$statement = $pdo->prepare('INSERT INTO test(datablob) VALUES(?);'); 
$data = fopen('file.txt','rb'); 
stream_filter_append($data,'zlib.deflate',STREAM_FILTER_READ); 
$statement->bindParam(1,$data,PDO::PARAM_LOB); 
$statement->execute(); 
相關問題