时间:2024-04-03
高考结束了,中考也跟着结束了,马上到了高中新生入学的日子,在新生入学的前夕,我们帮一个高中做了一个学生登记的管理系统。学校负责招生的老师把学生的中考信息导入到数据库后,系统会以学生的中考报名号为用户名,一个随机字符串为密码为学生生成一个用户,然后把密码通过短信发送给学生家长预留的手机号。
上传信息只是第一步,整理使用这些信息才是这个系统最重要的功能,也是做这个系统的目的所在。比如,每个班每个尺寸的校服需要做多少件,哪个学生定的是哪个尺寸的校服?没做这个系统以前,都需要人工收集信息、统计、核对,可是个累人的活。做了这个系统以后,班主任只需要在后台点击一个下载按钮,统计信息就清清楚楚得下载下来了。然后把数据发送给校服供应商、收到校服后,根据打印出来的表格分发给学生,轻松多了。
闲话扯得有点多了,我们来通过代码看一下其中批量导出用户照片的功能。
首先我们需要创建一个文件夹,导出的所有照片都放在这个文件夹里面,方便下一步的生成压缩包。然后我们获取照片,并根据需要重命名照片,把照片复制到上一步创建的文件夹里面。最后就是生成压缩包,供用户下载了,整个流程也就下面几行代码,非常简单。
/** *导出用户上传的内容 */ newDispatch([ 'export/([a-z]*)'=>function($request,$status="fexiang"){ $dir=wp_upload_dir()['basedir'].'/export'; $archive=wp_upload_dir()['basedir'].'/archive.zip'; if(!is_dir($dir)){ mkdir($dir); } //获取用户提交的内容 $args=[ 'post_type'=>$status, 'post_status'=>'any', 'posts_per_page'=>-1, ]; $query=newWP_Query($args); //准备需要压缩的目录 $folders=[]; foreach($query->postsas$post){ if($status==='fexiang'||$status==="zhufu"){ $username=get_post_meta($post->ID,'_name',true); }else{ $username=$post->post_title; } $user_dir=$dir.'/'.$username; //创建用户目录 if(!is_dir($user_dir)){ mkdir($user_dir,0700); } $folders[$username]=$user_dir; //获取用户上传的文件 $files=get_post_meta($post->ID,'files',false); //复制用户上传的文件到用户目录中 foreach($filesas$file){ $image_path=get_attached_file($file); $filename=basename($image_path); copy($image_path,$user_dir.'/'.$filename); } } //先删除存档文件,然后再创建,编辑添加文件到存档中出错 if(file_exists($archive)){ unlink($archive); } $zippy=Zippy::load(); $zippy->create($archive,$folders); wp_redirect(wp_upload_dir()['baseurl'].'/archive.zip'); exit; }, ]);
根据项目的实际情况,我们可以还有对上面的代码进行进一步的处理,比如当用户的照片不存在时,跳过处理,避免出错;把用户的照片和其他字段一起导出等等,上面的代码是在WordPress系统中实现的批量导出照片的功能,在其他系统中,肯定也有类似的辅助功能来帮助我们实现,如有需要,可以参考上面的代码进行实现。
Copyright © 2019-2024 thinkphp.xyz