Zip文件 - 下载 - 然后解压缩

时间:2017-07-05 06:52:29

标签: javascript php unzip zipfile

我在这里真的很困惑。所以我的项目中有什么。用户单击下载然后选择目录以保存文件,该文件将是一个zip文件。之后,我想在用户选择的同一目录中提取该zip文件。这甚至可以在一个脚本中使用吗?

这是我的PHP代码

<?php 
require_once('connect.php');
// Get real path for our folder
$rootPath = realpath($_GET['uniq']);

// Name of the zip derive from the database
$zipname = $_GET['name'] . '.zip';
// Initialize archive object
$zip = new ZipArchive();
$zip->open($zipname, ZipArchive::CREATE | ZipArchive::OVERWRITE);

// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath),
    RecursiveIteratorIterator::LEAVES_ONLY
);

foreach ($files as $name => $file)
{
    // Skip directories (they would be added automatically)
    if (!$file->isDir())
    {
        // Get real and relative path for current file
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($rootPath) + 1);

        // Add current file to archive
        $zip->addFile($filePath, $relativePath);
    }   
}

// Zip archive will be created only after closing object
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
?>

如果不可能是另一个问题。是否可以让用户选择一个zip文件,之后它将被提取到某个客户端目录,即。 C://xamp/extracthere/使用javascript。

1 个答案:

答案 0 :(得分:1)

用户将文件下载到自己的计算机后,无法控制。你不能强迫他们解压缩它,或者为此做任何其他事情。

想象一下,如果您可以控制用户本地磁盘上的文件,那将是黑客的梦想。在每种情况下出于类似的原因,使用PHP和JavaScript都是不可能的。