将一个.zip文件通过FTP上传并使用PHP解压缩

5

我正在尝试编写一个脚本,可以上传某个zip文件,目前是“test.zip”,然后解压它。我在这个网站上找到了一些有关如何解压缩的答案,但不知道如何在FTP服务器上执行。所有都要使用PHP。

当前代码:

$zip = new ZipArchive;
$zip->open('test.zip');
$zip->extractTo('./');
$zip->close();

再次感谢您 :)

那看起来像是可以解压缩的。你想要以编程方式FTP它吗?在解压缩之前还是之后?是从正在解压缩的服务器传输还是传输到该服务器? - halfer
4个回答

4
在解压之前,您可以使用表单上传zip文件(创建自己的管理区域?/仅限本地主机?)。我从上传图像的代码中复制了这段代码,并且只会上传.zip文件。 HTML部分:
<form action='file.php' enctype='multipart/form-data' method='post'>
    <p>Please Upload a ZIP File.</p>
    <input type='file' name='file'>
    <input type='submit'/>
</form>

PHP部分:

$temp = explode(".", $_FILES["file"]["name"])[1]; //Get the extension
if($temp == "zip"){
    move_uploaded_file($_FILES["file"]["tmp_name"],"unzipme.zip") or die("Couldn't upload. Check permissions and retry.");
            //Relocate home?
    header("Location: /");
    exit();
}

您需要获得上传到您的目录,如www-data或类似目录的权限。

希望这可以帮助您。


实际上我是指的www-data组* - user2802587

1

抱歉,我忘了提到这一点,我已经创建了一个上传ZIP文件的脚本,只需要在机器上解压缩它,但我不知道如何配置此方法来配合FTP会话。 - Beater
@Beater 我不明白为什么你需要进行配置。如果 zip 文件已经在机器上,并且你知道它的文件名,那么你只需要解压缩它,对吧? - chtenb

1
你需要在上传的机器上具有执行命令或程序的访问权限,或者能够上传一个脚本并通过URL执行。如果你正在通过FTP上传到能够运行PHP的Web服务器目录,则上传你的zip压缩文件和unzip.php文件,并在浏览器中加载unzip.php页面。

没有任何这样的访问权限,这是为其他人上传像PhpBB文件到他们的FTP目录中而制作的。感谢您的尝试帮助。 - Beater
不幸的是,解压缩是一个需要在发生解压缩的机器上运行的命令。如果您没有SSH或telnet访问权限,并且FTP帐户不包括可通过Web访问的文件夹,则无法在上传后解压缩它。但是,如果您只需要创建描述zip存档中所有内容的清单文件并将其发送,则可以这样做。我实际上不明白为什么如果它不是Web可访问位置,您会需要它们被解压缩。 - wwwslinger

1
这是提取FTP文件夹的代码,请在FTP中创建一个新的Php文件,复制以下代码并运行:
$path = getcwd();

$zip = new ZipArchive;

$res = $zip->open('yourZippedFolder.zip');

if ($res === TRUE) {

  $zip->extractTo($path.'/maunil/');

  $zip->close();

  echo 'Successfully Extracted';

}

else 
{

 echo 'failed to Extract';

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接