如何在 php 中下载 zip 文件 (yii)

How to download files in zip in php (yii)

如何在php yii 框架中下载用户上传的文件?

我的网站上有用户列表,每个用户可以为每个部分(工作信息、教育、证书等)上传多个文件

上传的文件正在保存在上传文件中。这是 link

C:\wamp\www\project\themes\mydesign\assets\global\uploads

在uploads foler中,还有很多其他文件夹,文件夹以用户id命名..

C:\wamp\www\project\themes\mydesign\assets\global\uploads\
C:\wamp\www\project\themes\mydesign\assets\global\uploads\
C:\wamp\www\project\themes\mydesign\assets\global\uploads\

1,2,3 是 user1、user2、user3.. 的文件夹名称,而 1,2,3 是 user1、user2、user3 的 id

当用户首次上传任何文件并保存时,会在上传文件夹中创建该用户的文件夹。

所有用户文件的每个部分都保存在他们的文件夹中。现在我想在每个用户的删除按钮附近的 CgridView 中添加一个下载按钮。我想为任何用户下载所有 zip 文件我要

有任何示例代码吗?我应该使用什么工具、扩展或库?或者有可用的代码吗?我是 yii 的新手,不知道如何为每个用户获取所有文件并下载到 zip 文件夹中。任何建议。

第 1 步: 您需要在您的网格中生成关联 link 以调用 Yii 控制器 -> 操作,比方说 actionZipDownload。为此,请遵循以下 link:确保您还将 userId 传递给该操作。

http://www.yiiframework.com/wiki/593/yii-cgridview-add-custom-button/

第 2 步: 在基于传递的用户 ID 的操作上,您需要根据您的设置(目录结构)定位关联用户目录路径。

第 3 步: 从该特定目录读取所有文件,添加这些文件以创建 zip,并将 zip 文件存储在临时目录中。 zip 名称可以是 userId_date.zip

步骤 2 和 3 的源可能如下所示,您需要对 $destination 的相对路径进行一些调整。还要检查 php 文档中的 http://php.net/manual/en/class.ziparchive.php

<?php
public function actionZipDownload(){
$userId = $_GET['userId']; // get the passed user id
$zip=new Zip Archive();
$destination=dirname($_SERVER['DOCUMENT_ROOT'])."/project/themes/mydesign/assets/global/uploads/".$userId."/filename.zip";
if($zip->open($destination,ZIPARCHIVE::CREATE) !== true) {
  return false;
}
 $doclist=CUploadedFile::getInstancesByName('files');
 foreach($doclist as $thefile)
 {
  $random=rand(11111,99999);
  $filename=$random.$thefile;      
  $zip->addFile($thefile->tempname,$filename);
 }
 $zip->close();   
 }
 ?>

第 4 步: 成功生成 zip 后,将响应发送到浏览器以供下载。

第 5 步: 成功下载后,您可能需要删除临时 zip 存档以保存 space。

From step 2 to step 5, follow this link http://www.bsourcecode.com/yii-framework/yii-files/yii-zip-format/

希望有所帮助。