如何在php yii框架中下载用户上传的文件?
我在我的网站上有用户列表,每个用户可以为每个部分上传多个文件(工作信息,教育,证书等)
上传的文件将保存在上传文件中。链接在这里
C:\wamp\www\project\themes\mydesign\assets\global\uploads
在上载文件夹中,还有许多其他文件夹,这些文件夹以用户ID命名。
C:\wamp\www\project\themes\mydesign\assets\global\uploads\1\
C:\wamp\www\project\themes\mydesign\assets\global\uploads\2\
C:\wamp\www\project\themes\mydesign\assets\global\uploads\3\
1,2,3是user1,user2,user3 ..的文件夹名称,而1,2,3是user1,user2,user3的文件夹id
。
当用户首次上传任何文件并保存时,将在上载文件夹中创建该用户的文件夹。
所有用户文件的每个部分都保存在其文件夹中。现在,我想在CgridView中为每个用户的删除按钮附近添加一个下载按钮..并且我想为我想要的任何用户下载zip文件。
这样做的任何示例代码吗?我应该使用什么工具,扩展程序或库?还是有可用的代码?我是yii的新手,不知道如何获取每个用户的所有文件并下载到zip文件夹中。有什么建议么。
步骤1:您需要在网格中生成关联链接以调用Yii控制器-> action,比如说actionZipDownload。为此,请单击下面的链接:确保还将userId传递给该操作。
http://www.yiiframework.com/wiki/593/yii-cgridview-add-custom-button/
步骤2:在基于传递的userId的操作上,您需要根据您的设置(目录结构)将目标关联用户目录路径。
步骤3:从该特定目录中读取所有文件,添加用于zip创建的文件,并将zip文件存储在一个临时目录中。邮政编码名称可以是userId_date.zip
第2步和第3步的源可能如下所示,您需要对$ destination的相对路径进行一些调整。另外,请检查php文档中的http://php.net/manual/zh/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:成功下载后,您可能需要删除temp zip存档以节省空间。
从第2步到第5步,请点击以下链接http://www.bsourcecode.com/yii-framework/yii-files/yii-zip-format/
希望会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句