本站原创文章,转载请注明: 转载自zrong's Blog,原文 自动修改DOCMAN上传的文件名称,欢迎使用文章源码进行转载。
本站转载文章会标明[转],转载请注明原始作者文章地址。
DOCMAN是Mambo/Joomla!的插件,我认为它是最好的下载插件。此插件的效果可以看这里。
但是,从我升级到Joomla1.0.8(DOCMAN版本1.3RC2)以来,如果上传的文件名包含中文,那么上传到服务器的文件就会变成乱码。但是,这个文件名在DOCMAN的管理界面中却显示正常。
这个问题的原因,是因为我使用了UTF-8编码,因此,我需要修改DOCMAN,让它自动更改我上传的文件名。
找到DOCMAN_file.class.php文件中的_upload函数定义(大约在381行),修改它为如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function _upload($name, $temp_name, $path) { if (is_uploaded_file($temp_name)) { $name = time().stristr($name,"."); if (move_uploaded_file($temp_name, $path."/".$name)) { $file = new DOCMAN_File($name, $path); return $file; } else { $this->_err = _DML_DIRPROBLEM." "; } } else { $this->_err = _DML_DIRPROBLEM2." "; } return false; } |
只是在原代码中加入了第4行。


如果用$name = mb_convert_encoding ($name,’GBK’,'UTF-8′);代替第四行,岂不更好
如果这样改,虽然上传的文件在服务器上正确显示了中文文件名,但是DOCMAN却不能正确调用,在后台中显示这个文件名是乱码。这就不是只改一句这么简单了。:em67:
感谢 zrong 的提示!
我们发现在 Remository 下载组件中也存在同样问题:中文名称的文件上传之后就是乱码。
请问:您能否抽空对 Remository 也作一些改进?
谢谢!
Joomla!之门 站长 白建鹏
to:baijianpeng
Joomla已经好久没有研究了,个人网站多媒体空间也停止了更新。既然不做网站了(包括自己的和别人的),Joomla当然也就没有怎么研究。目前一直在做Flex开发,偶尔研究一下WordPress,但基本上很少碰PHP和HTML,所以,只能抱歉了。
Zrong大 您好
您的第四行我也與mb_convert_encoding一同研究過。
對您的第四行很有興趣,可否請問,如何以date+time的方式來命名檔案?
(有google過,不過到目前還沒找到)
謝謝,亦可回我信箱,我會感謝您。
date+time的方法也很容易,只要你研究一下php中的日期/事件相关函数,然后获取正确的date+time,赋值给$name就好了。
您好
可否再問您個問題?
Docman上傳頁面中的日期是可以被使用者所修改的。
請問可以請問如何可以鎖死日期的修改或是直接隱藏此日期區塊嗎?
我有試著修改跟dmdate_published有關的程式碼
不過都失敗了,可否請您幫幫忙,非常感謝
这个我就不太清楚了。更深的代码我没有研究。没法帮你了。