当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : zenPhoto网络相册不能上传中文名图片的解决方法
帖子发表于 : 2009-04-25 8:37 
头像

注册: 2007-11-23 19:32
帖子: 113
送出感谢: 0 次
接收感谢: 0 次
最近找了个不错的相册博客程序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挺好的


页首
 用户资料  
 
2 楼 
 文章标题 : Re: zenPhoto网络相册不能上传中文名图片的解决方法
帖子发表于 : 2009-04-25 8:54 

注册: 2009-01-01 22:42
帖子: 84
送出感谢: 0 次
接收感谢: 0 次
:em11 :em11 :em11 :em11 :em11


_________________
温柔一刀技术空间http://www.php8k.com
更多精品Ubuntu资源收藏下载:http://www.php8k.com
完美应用Ubuntu(四本全部)http://php8k.com
极品Linux命令速查手册大全http://php8k.com


页首
 用户资料  
 
3 楼 
 文章标题 : Re: zenPhoto网络相册不能上传中文名图片的解决方法
帖子发表于 : 2009-04-25 9:02 
头像

注册: 2007-11-23 19:32
帖子: 113
送出感谢: 0 次
接收感谢: 0 次
AD一下
我的文字博客(网络日志):http://www.diegu.net/blog
我的图片博客(网络相册):http://www.diegu.net/gallery


_________________
Ubuntu挺好的


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Google Feedfetcher 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译