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

阿斯范迪亚尔汗

如何在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文件夹中。有什么建议么。

赛义德·埃克兰·乌丁(Syed Ekram Uddin)

步骤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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在url中传递长文件名并使用php函数下载文件?

来自分类Dev

如何在Cake中从Web下载文件?

来自分类Dev

如何在IE11中自动下载文件

来自分类Dev

如何在JEST中测试下载文件的请求

来自分类Dev

如何在Plone中为特定角色下载文件?

来自分类Dev

如何在Linux中从URL下载文件

来自分类Dev

如何在iOS中以特定顺序异步下载文件?

来自分类Dev

如何在python中解冻请求下载文件?

来自分类Dev

如何在laravel 5.4中下载文件

来自分类Dev

如何在锁定屏幕的 IE 中自动下载文件

来自分类Dev

如何在C#中从FTPS下载文件

来自分类Dev

如何在Watir中下载文件?

来自分类Dev

如何在webView中下载文件?

来自分类Dev

如何在Codeigniter中下载文件?

来自分类Dev

如何在Android中下载文件

来自分类Dev

如何在webView中下载文件?

来自分类Dev

如何使用php下载文件?

来自分类Dev

如何用php下载文件?

来自分类Dev

如何使用php下载文件?

来自分类Dev

Yii从CGridView下载文件

来自分类Dev

通过Yii下载文件

来自分类Dev

如何在不使用html中的下载标签的情况下创建可下载文件?

来自分类Dev

如何下载文件

来自分类Dev

如何下载文件?

来自分类Dev

如何使用相同格式的python从url下载文件?

来自分类Dev

如何在PHP中串联zip文件

来自分类Dev

如何在 WordPress 中使用 PHP headers() 从我的自定义插件页面下载文件?

来自分类Dev

如何在MVC 4中单击按钮上的新选项卡中下载文件

来自分类Dev

在Django中下载文件时如何在网页中显示内容