簡體   English   中英

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

[英]How to download files in zip in php (yii)

如何在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/

希望會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM