繁体   English   中英

如何将php ZipArchive保存到MySQL Blob?

[英]How do I save a php ZipArchive to a MySQL blob?

我需要将一个zip文件作为blob保存到我的mysql数据库中。 我已经使用创建了一个ZipArchive

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

zip存档包含我正在创建并添加到zip中的多个csv文件

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

csv创建良好(通过调试检查)。 然后,我使用以下命令将csvs添加到存档中

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

问题是我似乎无法将zip内容放入mysql blob。 我曾经尝试都readfile('test.zip')file_get_contents('test.zip')但在这两种情况下,我刚刚得到的NAME在zip里面的文件(我认为是)以压缩格式。

我正在使用cakePHP,创建zip的功能是从终端运行的。 我也不能以任何方式更改表结构。 无论如何,还有什么地方可以获取我创建的ZipArchive的句柄?

我找到了解决方案。 嗯,实际上这只是我的真正错误。 即使我使用$zip->close()该zip文件仍保留在我的服务器上。 因此,使用的空的zip文件只包含csv文件名,而不是我创建的新文件。

我要做的就是在关闭zip文件后在代码末尾unlink('test.zip') (无论如何,这都是一种好习惯)。

我使用以下命令将zip内容保存到我的MySQL blob中

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

另外,请确保在保存数据库之前调用$zip->close() 否则file_get_contents将无法正常工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM