BB’s Blog:本博近期关注 中国移动、电影、电视、手机软件.
优化上传(2):上传文件名字过滤及大小写问题

让上传文件自动过滤掉原文件名字中中文等非ascii名字,并自动小写。

MT上传文件是不改变原始名字的,这个是好处也是坏处。如果你的的服务器是对大小写敏感的,你可以根据下列方法,保留其对字母、数字的文件名不改名,对非字母(包括中文名)文件名自动改为数字。

编辑lib/MT/APP/CMS.pm 的sub upload_file { }函数。

(1)原来文件名字的代码是:

my $basename = $q->param('file') || $q->param('fname');
$basename =~ s!\\!/!g; ## Change backslashes to forward slashes
$basename =~ s!^.*/!!; ## Get rid of full directory paths

可以看的出来,这只是简单处理掉了路径而已,我们在这个模块最后里添加一个自定义函数,作为再次处理名字的工具。

方法:将其代码改为
sub _trim_name
{
my ($app,$fname) = @_;
$fname =~ s/^\s+|\s+$//gs;
$fname = lc($fname);
$fname =~s/[^\w.-]//g;
$fname = time().$fname if ($fname =~/^\./);
$fname;
}


(2)然后定位回到上面的$basename处理后,添加
$basename = $app->_trim_name($basename); # by EasunLee

修改完成。

文章参鉴路扬的MT上传文件的改动

本文信息

» 跟踪本文: 手机WAP
» 发表日期:2007年02月20日12:58 PM
» 分类: 改进 Hacks
» 作者:bb
» 本文链接:http://bblog.biz/movabletype/_hacks/upload_name.htmlEDIT
» 本文引用地址:本文不允许引用
» 本站留言支持:html标签、coCommentgravatar
» 书签:Add to 365KeyAdd to del.icio.us百度搜藏Add to Yahoo
» 现有评论:-、现有引用:-
» 评论审核:直接点击“我要回复”评论文章,需要管理员验证后才能显示,感谢你的回复.

评论(-)

本文不允许评论

引用(-)

本文不允许引用

我要回复

昵称:   记住我的用户信息:
邮件:   Subscribe to This Entry:
主页:
Very Happy Smile Sad Surprised Shocked Confused Cool Laughing Mad Razz Embarassed Crying or Very Sad Evil or Very Mad Twisted Evil Rolling Eyes Wink
Short Cuts
Search my Blog
Subscribe This Entry
  • Enter your Email address:
Archives
Vote
评价本文:
Category Entries