如何向我的客户端提供解压缩下载

时间:2017-11-07 06:40:14

标签: php

我的服务器中有一个zip文件,其名称为 don.zip 。在这个zip中我有 image.jpg 文件。现在我的客户端的任何人都可以单击该文件上的下载并下载解压缩模式。我的意思是,点击下载我的客户端应该可以下载 image.jpg

请问这怎么可能? 告诉我任何答案

my download.php

<?php
include('connection.php');

$id = $_GET['id'];
$query = "select * from dow_test where id='$id'";
$query1 = mysql_query($query);
while($row= mysql_fetch_array($query1))
{
$file_name = $row['file'];
$file_url = $row['file_url'];
$download = new ZipArchive;
$res = $download->open($file_name);
if ($res === TRUE) {
  $download->extractTo('C:\Users\Public\Downloads');
  $download->close();
}
header('Content-Type: application/octet-stream');
header("Content-disposition: attachment; filename=".$file_name); 
readfile($download);

}
?>

HTML

<a href="get1.php?id=12">Download</a>

2 个答案:

答案 0 :(得分:0)

您无法确定如何在客户端计算机上处​​理下载的文件(是的,甚至是.zip)。如果你能做到这将是一场安全噩梦!您所能做的就是从您的php脚本启动下载,但这是行尾。

您所能做的就是为用户提供说明,让他们配置本地文件设置以启用自动解压缩,这需要进行研究,具体取决于平台,使用的默认应用程序等。

答案 1 :(得分:-1)

试一试

<?php
include('connection.php');

$id = $_GET['id'];
$query = "select * from dow_test where id='$id'";
$query1 = mysql_query($query);
while($row= mysql_fetch_array($query1))
{
    $file_name = $row['file'];
    $file_url = $row['file_url'];
    $download = new ZipArchive;
    $res = $download->open($file_name);

    if ($res === TRUE) {
        $download->extractTo('C:\Users\Public\Downloads');
        $download->close();
        unlink($file_name);

$files = find_all_files("foldername");
        $source = "dir/";
        foreach ($files as $file) {
            $file = substr($file, strlen("dir/"));
            if (in_array($file, array(".",".."))) continue;
            if (!is_dir($source.$file)){
                echo '[FILE] '.$source.$file .' -> '.$file . PHP_EOL;
                rename($source.$file, $file);
            }else{
                echo '[DIR]  '.$file . PHP_EOL;
                @mkdir($file);
            }
        }

        // Remove folder dir
        foreach ($files as $file) {
            if (in_array($file, array(".",".."))) continue;
            if (is_dir($file)){
                echo '[REM]  '.$file . PHP_EOL;
                @rmdir($file);
            }
        }
        @rmdir('./folder');

        // Check if copy was successful
        if(file_exists('index.php')){

            // Redirect 


        }else{
            echo "Oops, that didn\'t work...";
        }
///

    }

    header('Content-Type: application/octet-stream');
    header("Content-disposition: attachment; filename=".$file_name); 
    readfile($download);
}
?>