有人可以发布代码或指向php脚本的工作示例,该脚本打开位于远程服务器上的已知zip文件(通过http)并将该zip文件的内容提取到与调用相同的服务器上的文件夹中脚本?
Server A calls out for zip file located on Server B
Server B sends the zip file over to server A
Server A extracts the contents of the Zip to Directory C (pub_html) on Server A
我一直在四处寻找如何让它发挥作用,看起来它应该是非常简单的很多例子,但我找不到。
答案 0 :(得分:1)
你走了。
相应地改变顶部的$ filename和$ dest_folder。 $ dest_folder当前设置为当前文件夹(PHP脚本本身所在的位置)。
<?php
$filename = 'http://someplace.com/somezipfile.zip';
$dest_folder = '.';
$out_file = fopen(basename($filename), 'w');
$in_file = fopen($filename, 'r');
while ($chunk = fgets($in_file)) {
fputs($out_file, $chunk);
}
fclose($in_file);
fclose($out_file);
$zip = new ZipArchive();
$result = $zip->open(basename($filename));
if ($result) {
$zip->extractTo($dest_folder);
$zip->close();
}
?>
答案 1 :(得分:0)
documentation演示了一个简单的案例:
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
echo 'ok';
$zip->extractTo('test');
$zip->close();
} else {
echo 'failed, code:' . $res;
}
?>
您需要注意脚本执行时间,具体取决于远程存档的大小,以及服务器与远程服务器通信的速度。
答案 2 :(得分:0)
好的,首先我建议您编写一个curl函数或类,为您填充zip文件并将它们存储到临时文件夹或其他地方。 保存zip文件后,我假设您知道它的名称。 然后你可以简单地做到这一点
<?php
$zip = new ZipArchive;
$zip->open('test.zip');
$zip->extractTo('./');
$zip->close();
?>
虽然这对于提取zip文件很简单。它需要一些错误,但它确实有工作乐趣:-)