将文件从字符串添加到新文件夹 ZipArchive
Posted
技术标签:
【中文标题】将文件从字符串添加到新文件夹 ZipArchive【英文标题】:Add file from string to new folder ZipArchive 【发布时间】:2013-07-06 08:34:05 【问题描述】:假设我有一个名为并实例化的变量:
$css = 'body color:red;';
目前,我正在按如下方式构建我的 zip 文件:
ini_set("max_execution_time", 300);
// create object
$zip = new ZipArchive();
// open archive
if ($zip->open("my-archive.zip", ZIPARCHIVE::CREATE) !== TRUE)
die ("Could not open archive");
// initialize an iterator
// pass it the directory to be processed
$jsFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../js"));
$cssFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../css"));
$images = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../_design"));
// iterate over the directory
// add each file found to the archive
foreach ($jsFiles as $key=>$value)
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
foreach ($cssFiles as $key=>$value)
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
foreach ($images as $key=>$value)
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
// close and save archive
$zip->close();
echo "Archive created successfully.";
假设我已经有一个名为color.css
的文件位于/css/main/color.css/
中,我希望我的新字符串$css
替换存档 中的整个NEW 文件>,我该怎么做?我查看了ZipArchive::addFromString
,但看不到将其放入某个文件夹的方法。这是我整个目录中唯一需要更改的文件。
任何帮助都会很棒。
【问题讨论】:
【参考方案1】:如果您查看示例 #2 http://www.php.net/manual/en/ziparchive.addfromstring.php,您会看到 ZipArchive::addFromString 的第一个参数实际上可以是 zip 存档中的任何路径。
因此,在您的情况下,调用将如下所示:
$zip->addFromString("css/main/color.css",$css);
【讨论】:
以上是关于将文件从字符串添加到新文件夹 ZipArchive的主要内容,如果未能解决你的问题,请参考以下文章
在 asp.net web api 中使用 MemoryStream 和 ZipArchive 将 zip 文件返回给客户端