批量导出 WordPress 中用户上传的照片并压缩为 Zip 文件供用户下载
文 / @UTHEME
小本本的学生管理系统
高考结束了,中考也跟着结束了,马上到了高中新生入学的日子,在新生入学的前夕,我们帮一个高中做了一个学生登记的管理系统。学校负责招生的老师把学生的中考信息导入到数据库后,系统会以学生的中考报名号为用户名,一个随机字符串为密码为学生生成一个用户,然后把密码通过短信发送给学生家长预留的手机号。
从信息上传到数据统计
上传信息只是第一步,整理使用这些信息才是这个系统最重要的功能,也是做这个系统的目的所在。比如,每个班每个尺寸的校服需要做多少件,哪个学生定的是哪个尺寸的校服?没做这个系统以前,都需要人工收集信息、统计、核对,可是个累人的活。做了这个系统以后,班主任只需要在后台点击一个下载按钮,统计信息就清清楚楚得下载下来了。然后把数据发送给校服供应商、收到校服后,根据打印出来的表格分发给学生,轻松多了。
批量导出用户上传的照片为Zip压缩包并自动下载
闲话扯得有点多了,我们来通过代码看一下其中批量导出用户照片的功能。
首先我们需要创建一个文件夹,导出的所有照片都放在这个文件夹里面,方便下一步的生成压缩包。然后我们获取照片,并根据需要重命名照片,把照片复制到上一步创建的文件夹里面。最后就是生成压缩包,供用户下载了,整个流程也就下面几行代码,非常简单。
/**
*导出用户上传的内容
*/
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系统中实现的批量导出照片的功能,在其他系统中,肯定也有类似的辅助功能来帮助我们实现,如有需要,可以参考上面的代码进行实现。

相关文章
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
创建Vue组件详细教程 2023-09-10 00:23:17
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02
-
Astra 主题团队推出人工智能驱动的 WordPress 网站创建平台 – ZIPWP 2023-08-28 16:49:54
-
WordPress 宣布将为用户提供 100 年域名托管服务 2023-08-28 16:45:27
-
PHP判断if else 和 switch case的区别盘点 2023-07-29 15:11:11
-
详解WordPress独立站SEM中的OCPC方法(含百度推广OCPC与谷歌OCPC) 2023-07-19 08:01:30
-
WordPress的古腾堡全站编辑器site-editor.php介绍(附:site-editor.php启用代码) 2023-07-16 08:01:57
-
WordPress的Customize Partial功能最全介绍(含:demo代码) 2023-07-16 00:21:56