我想解压缩一个文件,这工作得很好

system('unzip File.zip');

但我需要通过URL传递文件名,不能让它工作,这就是我所拥有的。

$master = $_GET["master"];
system('unzip $master.zip'); 

我错过了什么?我知道一定是我忽视的小而愚蠢的事情。

谢谢你!


当前回答

就用这个吧:

  $master = $_GET["master"];
  system('unzip' $master.'.zip'); 

在代码中,$master作为字符串传递,系统将寻找一个名为$master.zip的文件

  $master = $_GET["master"];
  system('unzip $master.zip'); `enter code here`

其他回答

简单地尝试这个yourDestinationDir是目的地提取到或删除-d yourDestinationDir提取到根目录。

$master = 'someDir/zipFileName';
$data = system('unzip -d yourDestinationDir '.$master.'.zip');

只改变

system('unzip $master.zip');

到这个

system('unzip ' . $master . '.zip');

或者这个

系统(“{$大师}. zip解压缩”);

简单的PHP解压缩函数。请确保您的服务器上安装了zip扩展。

/**
 * Unzip
 * @param string $zip_file_path Eg - /tmp/my.zip
 * @param string $extract_path Eg - /tmp/new_dir_name
 * @return boolean
 */
function unzip(string $zip_file_path, string $extract_dir_path) {
    $zip = new \ZipArchive;
    $res = $zip->open($zip_file_path);
    if ($res === TRUE) {
        $zip->extractTo($extract_dir_path);
        $zip->close();
        return TRUE;
    } else {
        return FALSE;
    }
}

请不要这样做(将GET var作为系统调用的一部分)。用ZipArchive代替。

所以,你的代码应该是这样的:

$zipArchive = new ZipArchive();
$result = $zipArchive->open($_GET["master"]);
if ($result === TRUE) {
    $zipArchive ->extractTo("my_dir");
    $zipArchive ->close();
    // Do something else on success
} else {
    // Do something on error
}

为了回答你的问题,你的错误是“something $var something else”应该是“something $var something else”(双引号)。

就用这个吧:

  $master = $_GET["master"];
  system('unzip' $master.'.zip'); 

在代码中,$master作为字符串传递,系统将寻找一个名为$master.zip的文件

  $master = $_GET["master"];
  system('unzip $master.zip'); `enter code here`