【web】CodeIgniter框架学习笔记 之 解压上传zip文件

问题:

上传并解压文件名为 id_date.zip 文件,如下:

文件需要解压并分别存储到对应的id和日期下,目录格式为assets/file/id/date ,效果如下

解决方案:

因为CI 自带的Library没有upload这个功能,首先要借用大佬的upload.php,文件下载地址:

https://github.com/philsturgeon/codeigniter-unzip

将Unzip.php 保存到我们的system/libraries 目录下

并修改此文件的一小行:

class Upload {} 改成 class CI_Upload {}

controller中:

public function upload_zip()
	{

		$config['upload_path'] = './assets/temp';
		$config['allowed_types'] = 'zip';
		$this ->load ->library('upload',$config);

        //判断是否上传成功
		if(!$this->upload ->do_upload()){
			$error = array('error' => $this ->upload -> display_errors());
			print_r($error);


		}else{
            //先把zip文件上传到 './assets/temp'目录下
			$data = array('upload_data' => $this -> upload ->data());

			$this->load->library('unzip');
            //获取到filename 是2_20190719
			$filename=$_FILES['userfile']['name'];
            // 根据 _ 符号把字符串切分为  str[0]=2 和 str[1] = 20190719
			$str = explode("_",$filename);

            //$id =2
			$id =$str[0];
			$str2 = explode(".",$str[1]);

            //$date =20190719
			$date = $str2[0];
            
            // 判断解压到的目标地址是否存在,如果不存在就创建新的文件夹
            //创建的目录为./assets/file/2/20190719
			if (!is_dir('./assets/file/'.$id.'/'.$date.'/')) {
				mkdir('./assets/file/'.$id.'/'.$date.'/', 0777, TRUE);

			}

            //将./assets/temp/2_20190719解压到 ./assets/file/2/20190719
	        $this->unzip->extract('./assets/temp/'.$data['upload_data']['file_name'],'./assets/file/'.$id.'/'.$date.'/');


		}

	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值