Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

discuz 附件上传后的文件名称命名规则与储存路径解析说明

[复制链接]
ayumibs 发表于 2009-10-23 21:49:54 | 显示全部楼层 |阅读模式
本帖最后由 ayumibs 于 2009-10-23 21:56 编辑

discuz 附件上传后的文件名称解析(即服务器端文件命名规则与存储路径解析)
由于本人比较喜欢对文件进行整齐的分类,以便以后管理才写了这篇解析说明文。
1.大家都知道discuz附件上传到服务器上不是名字都被修改过的,
2.附件文件的存储路径discuz默认是在一个文件夹内,不过提供四种不同的附件保存方式可供选择,但问题是官方给的太简单了,不利于站长对论坛附件方便的管理和检查。
希望官方能提供更好的文件重命名规则与更详细的保存方式
我研究了一下得出以下规则



  命名规则与路劲保存方式由 include文件夹下的 post.func.php文件控制。附件的读取在7.0以前的版本由swfupload.func.php控制,从7.1新版本开始全部由post.func.php文件控制,(swfupload.func.php已经不存在了,官方给的安装包里已经没有这个文件了)。

先说下附件存储路径的代码段是

  1.                                  case 1: $attach_subdir = 'forumid_'.$GLOBALS['fid']; break;
  2.                                         case 2: $attach_subdir = 'ext_'.$extension; break;
  3.                                         case 3: $attach_subdir = 'month_'.date('ym'); break;
  4.                                         case 4: $attach_subdir = 'day_'.date('ymd'); break;
复制代码
这四行代码分别对应官方默认的四种保存方式。
我在这里提供一个存储方式,代码为

  1.                                         case 1: $attach_subdir = $extension.'_'.$GLOBALS['fid']; break;
  2.                                         case 2: $attach_subdir = 'ext_'.$extension; break;
  3.                                         case 3: $attach_subdir = 'month_'.date('ym'); break;
  4.                                         case 4: $attach_subdir = 'day_'.date('ymd'); break;
复制代码
以上代码的第一种方式我改为先用文件扩展名分类优先+板块ID分类为次的方法储存,像rar_3,rar_5,jpg_7,(前面的rar代表这个文件夹只放rar格式的附件,后面的数字代表论坛的版块,意思就是只放这个版块的rar格式的附件。其他格式都是自动创建这种方式建立的文件夹,这样方便站长了解每个文件里面都放了什么东西,O(∩_∩)O~整齐多了吧)
注:对于二级文件夹的和多级文件夹代码暂时不写了,暂时我还不知道正确的多级文件夹分类的写法,试了很多都不行。
本来像用多级文件夹分类更方便管理,先用版块ID做第一分类,二级由文件类型分类,三级由用户ID分类。
希望官方能提供,或者大家有兴趣可以研究交流下。


  命名规则主要由$attach_basename这个参数控制。
官方默认的命名规则代码是

  1.                                 $attach_basename = basename($attach['attachment']);
复制代码
默认的不知道是什么方式的规则,很乱,我还不清楚方法,我在这里给一个很简单的规则

  1.                                 $attach_basename = $attach['filename'];
复制代码
这是不按源文件的名字存储的方法,中文还是中文,文件名不会变。这种方法虽然名称不会乱,但是重名的附件会自动覆盖,这样就不太好了,但是可以加多个参数区分开来,比如加上时间参数可以防止重名覆盖,具体大家自动动手吧,其实还是更需要官方的支持。



想交流的朋友欢迎加QQ群:49642170交流
更多的命名方法稍后将会在我的论坛给出,

abans交流区 http://bbs.abans.cn
回复

使用道具 举报

五元超市 发表于 2009-10-24 01:14:30 | 显示全部楼层
学习了。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-7-20 13:12 , Processed in 4.149949 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表