zenPhoto网络相册不能上传中文名图片的解决方法

软件和网站开发以及相关技术探讨
回复
头像
筷子哲学
帖子: 113
注册时间: 2007-11-23 19:32

zenPhoto网络相册不能上传中文名图片的解决方法

#1

帖子 筷子哲学 » 2009-04-25 8:37

最近找了个不错的相册博客程序ZENPHOTO,使用过程中发现不能上传中文的图片文件,仔细研究发现原来是在上传的过程中,程序自动去掉了中文字符,如果纯中文的图片上传进去,文件名就只剩下扩展名了,多少张图片传上去都只剩下一张图片,其他的全被覆盖掉了,晕,即便是英文名的图片,上传也不能同名,因为程序上传上去的文件名均是原文件名,我想,如果相册里面有个几百上千张图片,谁还记得上传过什么名称的文件哦,真搞不懂原设计者怎么会没有考虑到这个问题。
于是在网上找了几段代码,自己动手改了一下,加了文件随机文件名替换。小测试了一下,感觉还可以,于是写下来,供大家参考:

先在程序文件夹下面的ZP-CORE文件夹内找到admin-functions.php文件,在文件最后加上以下代码:

//获取随机数字
function GetID($prefix){
$seedstr = split(" ",microtime(),5);
$seed = $seedstr[0]*10000;
srand($seed);
$random = rand(1000,10000);
$filename = date("YmdHis", time()).$random.$prefix;
return $filename;
}

//获取文件扩展名
function file_kz($file_name)
{
return substr(strrchr($file_name,'.'),1);
}

//获取没有扩展名的文件名
function file_m($file_zn){
$f_name = explode('.'.fileext($file_zn),$file_zn);
return $f_name[0];
}

再在同一个文件夹下面找到admin-upload.php文件,找到65-73行代码,看起来应该是下面这样:
$soename = internalToFIlesystem(seoFriendlyURL($name));//就是这一行就是去掉中文字符的
if (is_valid_image($name) || is_valid_other_type($name)) {
$uploadfile = $uploaddir . '/' . $soename;
move_uploaded_file($tmp_name, $uploadfile);
@chmod($uploadfile, 0666 & CHMOD_VALUE);
$image = newImage($album, $soename);
if ($name != $soename) {//判断文件名是否相同,如果不同则按原文件名存入标题栏
$image->setTitle($name);
$image->save();
}
(以上的代码我加了一些注释)
替换成以下部分代码:
$nameb = GetID('.'.fileext($name));//将文件名换成随机文件名
if (is_valid_image($name) || is_valid_other_type($name)) {
$uploadfile = $uploaddir . '/' . $nameb;
move_uploaded_file($tmp_name, $uploadfile);
@chmod($uploadfile, 0666 & CHMOD_VALUE);
$image = newImage($album, $nameb);
//这里去掉了原来的判断
$image->setTitle(file_m($name));//改了参数,将传入标题栏的扩展名去掉了
$image->save();
去掉文件名判断的原因是我觉得没有必要,因为只要按原文件名存入就可以了。
这样就可以解决了文件上传时的中文名的问题了。
如果你懒得改文件,在我的博客http://www.diegu.net/blog/read.php?11里面提供了修改好的文件下载,你可以下载后直接传到服务器上,记得是在ZP-CORE文件夹目录下面.
Ubuntu挺好的
chaogege
帖子: 84
注册时间: 2009-01-01 22:42

Re: zenPhoto网络相册不能上传中文名图片的解决方法

#2

帖子 chaogege » 2009-04-25 8:54

:em11 :em11 :em11 :em11 :em11
温柔一刀技术空间http://www.php8k.com
更多精品Ubuntu资源收藏下载:http://www.php8k.com
完美应用Ubuntu(四本全部)http://php8k.com
极品Linux命令速查手册大全http://php8k.com
头像
筷子哲学
帖子: 113
注册时间: 2007-11-23 19:32

Re: zenPhoto网络相册不能上传中文名图片的解决方法

#3

帖子 筷子哲学 » 2009-04-25 9:02

AD一下
我的文字博客(网络日志):http://www.diegu.net/blog
我的图片博客(网络相册):http://www.diegu.net/gallery
Ubuntu挺好的
回复