php批量上传图片并把图片名放入数据库
前几天工作中要做这样一个功能,有八百多个系统 生成的会员;给这八百多个系统会员上传图片;然后把图片名放入数据库。
第一步:
第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<!--?php try { $upload=new Upload(); $upload--->set_ext(array(‘zip‘)); $path=‘目录名‘; if ( ! Io::mkdir($path)) // 创建目录 { throw new Exception("无法创建文件上传目录:$path"); } $upload->set_path($path); if(!$upload->is_allow_ext($_FILES[‘files‘][‘name‘])) { $this->show_message(‘必须zip格式数据‘, ‘0‘, NULL, TRUE); } $result=$upload->save($_FILES[‘files‘]); $archive = new Archive_Zip(); $archive->set_target($path)->decompress($result[‘file‘]); unlink($result[‘file‘]);//删除使用后的zip; $this->show_message(‘导入成功‘, ‘1‘, array(array(‘text‘=>‘返回导入页面‘,‘href‘=>‘***跳转的链接地址***‘)),TRUE);
}catch(Exception $e){ $this->show_message(‘图片导入失败‘, ‘0‘, NULL, TRUE); } } ?> |
第二步:
图片上传完成后,就应该把目录下所有的系统会员图片名称取出来,那就得用遍历了。想想也不用那么麻烦了,php自带函数glob();
glob() 函数返回匹配指定模式的文件名或目录。
该函数返回一个包含有匹配文件 / 目录的数组。如果出错返回 false。
1 2 3 4 5 6 7 8 9 10 11 |
<!--?php //获取目录所有文件并将结果保存到数组 foreach(glob("目录名/*") as $d){ $tmp=explode(‘.‘,$d); $k=end($tmp); //如果是文件,并且后缀名为jpg png的文件 if(is_file($d)&&in_array($k,array(‘jpg‘,‘png‘))){ $files[]=str_replace(‘******目录名/‘,‘‘,$d); } } ?--> |
循环过程中因为我只想得到图片名称,所以我把前面的目录替换为空。
第三步:
列出所有的图片后就该把图片文件名插入数据库了。
写个循环就可以了啊。
首先,用SELECT。。。。。。。。查出系统会员,然后计算出系统会员的个数,
1 2 3 4 5 6 7 |
<!--?php //查出系统会员 $member= DB::query(Database::SELECT, " SELECT * FROM 会员表名 WHERE 是否为系统会员 =1; ") --->execute() ->as_array(); ?> |
然后再循环插入数据库:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!--?php for($i=0;$i<count($files);$i++){ $data = array( ‘图片字段‘ =--> $files[$i], ); DB::update(‘会员表‘) ->set($data) ->where(‘系统会员ID‘, ‘=‘, $member[$i][‘系统会员ID‘]) ->execute();
} ?> |
OK。就这样就搞定了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。