外部服务器上的 Zip 文件并在我的服务器上下载 zip

Posted

技术标签:

【中文标题】外部服务器上的 Zip 文件并在我的服务器上下载 zip【英文标题】:Zip file on external server and download the zip on my server 【发布时间】:2015-02-18 05:20:40 【问题描述】:

以下是我的要求,但我无法理解如何使用 php 来做到这一点。

    用户选择一些文件列表并点击下载。 请求发送到文件所在的外部服务器(使用 HTTPS)。 它会压缩用户在步骤 1 中选择的那些文件集。 然后将压缩文件下载到用户的系统上。

我探索了不同的选项,例如使用 SSH2、curl、file_get_contents。但我无法确定这一切将如何运作。

【问题讨论】:

【参考方案1】:

试试这个代码

create upload.php

<?php
    $error = "";        //error holder
    if(isset($_POST['compress']))
        $post = $_POST;    
        $file_folder = "files/"; //Folder where files are exists   
        if(extension_loaded('zip'))
           // Checking ZIP extension is available
            if(isset($post['files']) && count($post['files']) > 0) 
                $zip = new ZipArchive();            // create zip class object 
                $zip_name = time().".zip";          // Zip name
                if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE)        // Open zip object
                    $error .=  "* Zip file could not be create<br/>";
                
                foreach($post['files'] as $file)              
                    $zip->addFile($file_folder.$file);           // Adding files into zip
                
                $zip->close();
                if(file_exists($zip_name))
                    // push to download the zip
                    header('Content-type: application/zip');
                    header('Content-Disposition: attachment; filename="'.$zip_name.'"');
                    readfile($zip_name);
                    // remove zip file is exists in temp path
                    unlink($zip_name);
                

            else
                $error .= "* Please select file to zip <br/>";
        else
            $error .= "* You dont have ZIP extension<br/>";
    
?>



Create index.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Download As Zip/RAR</title>
</head>
<body>
<center><h1>Create a Compress file with PHP</h1></center>
<form name="zips" method="post">
<table>
<?php
if($error!='')

    ?>
    <center><h5 style="color:red;"><?php echo $error; ?></h5></center>
    <?php

?>
    <tr>
        <td><input type="checkbox" name="files[]" value="car.jpg"></td><td><img src='car.jpg' width='50'></td><td>Car.jpg</td></tr>
        <tr><td><input type="checkbox" name="files[]" value="plane.jpg"></td><td><img src='plane.jpg' width='50'></td><td>Plane.jpg</td></tr>
        <tr><td><input type="checkbox" name="files[]" value="bike.jpg"></td><td><img src='bike.jpg' width='50'></td><td>Bike.jpg</td></tr>
        <tr><td><input type="submit" name="compress" value="compress"></td><td></td><td></td></tr>

</table>
</form>
</body>
</html>

【讨论】:

【参考方案2】:

你可以使用ziparchive来创建压缩文件,你可以让你的代码下载压缩文件。

参考:

http://php.net/manual/en/class.ziparchive.php

【讨论】:

以上是关于外部服务器上的 Zip 文件并在我的服务器上下载 zip的主要内容,如果未能解决你的问题,请参考以下文章

这个lua代码是否可以在我的GMOD服务器上下载某些文件

在 Mac 上下载 Ngrok

需要php脚本在远程服务器上下载文件并保存在本地

无法使用 LibGDX Net 在 Android 上下载 100mb 文件

HTTP“Content-Disposition:附件”并在 iOS 网络浏览器上下载文件

如何通过url方式从自己的服务器上下载文件?