在将本地文件存储到数据库之前,通过php压缩本地文件

时间:2017-10-11 11:58:41

标签: php mysql pdo

我想在将文件发送到数据库之前在php中压缩文件。

一种解决方案

ORDER BY MAX(`created_date`) DESC;

但我不想将文件读入内存。没有压缩,它看起来像:

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

如何在php中压缩本地可用文件以将其添加到数据库中(不将内容存储在内存中)?

我正在考虑将文件Stream包装到压缩流中并将此“压缩”流句柄绑定到PDO语句的解决方案。但这看起来怎么样?

1 个答案:

答案 0 :(得分: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();