简单的代码? PHP脚本从中央服务器提取update.zip并将其解压缩到本地文件夹!

时间:2010-02-23 18:50:11

标签: php

有人可以发布代码或指向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

我一直在四处寻找如何让它发挥作用,看起来它应该是非常简单的很多例子,但我找不到。

3 个答案:

答案 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文件很简单。它需要一些错误,但它确实有工作乐趣:-)