附件目录自定义扩展
通过 Filter_Plugin_Upload_Dir 接口,可以在 Z-BlogPHP 读取附件对象的 Dir 属性(相对于 zb_users 的存储目录)时接管默认逻辑,适用于按文件类型分目录、自定义目录结构等场景。该规则同时决定新附件的保存位置与所有附件的访问地址、物理路径的计算结果。
接口信息
| 接口 | 参数 | 说明 |
|---|---|---|
Filter_Plugin_Upload_Dir | $upload | Upload 类的 Dir 方法接口 |
完整案例
下例把图片类附件改存到 upload/image/ 下的年月子目录,其余类型返回空值交回系统默认目录:
php
<?php
RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");
function ActivePlugin_demoAPP()
{
Add_Filter_Plugin('Filter_Plugin_Upload_Dir', 'demoAPP_Upload_Dir');
}
function demoAPP_Upload_Dir($upload)
{
global $zbp;
if (strpos($upload->MimeType, 'image') === false) {
// 非图片类附件返回空值,交回系统默认目录规则
return '';
}
return 'upload/image/' . date('Y', $upload->PostTime) . '/' . date('m', $upload->PostTime) . '/';
}注意事项
- 本接口的返回值非空即生效,不需要设置
PLUGIN_EXITSIGNAL_RETURN信号;返回空值时交回系统默认目录(upload/年/月/,开启选项后含日目录);自 Z-BlogPHP 1.7.3 起支持空值回退; - 返回的目录必须以
/结尾:系统的物理路径按usersdir . Dir . Name拼接、访问地址按host . 'zb_users/' . Dir . Name拼接,缺少结尾斜杠会把文件名直接拼进目录名; - 附件的
Dir、Url、FullFile都由本规则动态计算,规则一旦变更,已上传附件的访问地址可能与实际存放位置不再对应,导致 404,目录规则应一次确定、谨慎调整; - 本接口影响所有附件的地址与路径计算,与
Filter_Plugin_Upload_Url接口搭配使用时注意两者指向一致。