2017-10-11 87 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(); 
相关问题