[英]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.