php実装ファイルダウンロードのコード

1913 ワード

$file_dir=$totalDirectory;
     $file_name=$filename;
     //echo './db/'.$file_dir.$file_name;
    if (file_exists($file_dir.$file_name)){
          $file=fopen($file_dir.$file_name,'r');
         Header('Content-type:application/octet-stream');
         Header('Accept-Ranges:bytes');
         Header('Content-Disposition:attachment;filename='.$file_name);
         echo fread($file,filesize($file_dir.$file_name));
         fclose($file);
         exit;
         
     }else{
         echo 'file is not exists';
     }
yiiフレームワークの下でファイルを一括ダウンロードする
bool ZipArchive::addFile ( string  $filename  [, string  $localname  =  NULL  [, int  $start  = 0 [, int  $length  = 0 ]]] )
$zip = new ZipArchive();

			$filename="attach_".uniqid().".zip";
			$filepath="workflow_attachs/".$filename;

			if ($zip->open($filepath, ZIPARCHIVE::CREATE)!==TRUE) {
				exit('      ,        ');
			}
			$attachs = WorkflowAttach::model()->findAll("wid={$wid}");
			foreach($attachs as $item){
				$datalist[]=$item['filepath'];
			}
			
			foreach( $datalist as $key=>$val){
				if(file_exists($val)){
                    $val = @iconv("UTF-8","GBK",$val);
				 $key = @iconv("UTF-8","GBK",$key); //           ,      
				 $zip->addFile($val,'     '); 
				}
			}
			$zip->close();//  
			if( !file_exists($filepath)){
			  exit("      "); //    ,      。。。。

			}

$file = fopen($filepath,"read"); $content = fread($file,filesize($filepath)); fclose($file); CHttpRequest::sendFile($filename,$content);