登录 注册

登录

问题 请问joomla 文章附件Attachments 如何支持中文文件名

更多
2010年08月11日 00:28 - 2010年08月14日 15:57 #1 作者: laphantic

用joomla做个小站,需要附件组件支持中文文件名。
在网上搜索到这些资料,Attachments 2.0版本 ,证明可以上传中文文件名,但是出现了新问题,就是每次发表新文章会出现"500 - ERROR_CANNOT_SWITCH_PARENT_S_RENAMING_FILE_S_FAILED (ERR 200)"错误,请问如何解决

hxxp://www.nzye.com/index.php?option=com_content&view=article&id=27:20090905&catid=5:wdrj&Itemid=15

Attachments v1.3.4中文文件名乱码修正方法

作者:Administrator | 2009-09-05

主要修正上传的中文文件名附件在服务器上乱码的问题。

Attachments是Joomla 1.5上给文章中添加附件的组件,你可以从前台或后台给文章添加组件。

网站管理员可以在后台Attachments的组件参数中设置是否允许未注册用户看到附件,还可以设置是否有权下载、编辑或上传附件。

设置附件前缀,判断是否已上传过同名文件,从而避免覆盖现有文件;支持 SEF。

为了有效地减少附件盗链,可以使用“安全下载模式”,在该模式下,凡是没有适当权限的人无法看到、下载这些附件。

下面写一下修正方法,以备升级之用:

打开组件包中的site\helper.php文件,或安装后的components\com_attachments\helper.php文件

第一步,找到381行:

if (JFile::upload($_FILES, $filename_sys)) {

替换成:

if (JFile::upload($_FILES, mb_convert_encoding($filename_sys, "gbk", "UTF-8"))) {

第二步,找到443行,即:

if ( !JFile::exists($filename_sys) ) {

在其下面插入:

$filename = mb_convert_encoding($filename, "gbk", "UTF-8");
$filename_sys = mb_convert_encoding($filename_sys, "gbk", "UTF-8");

保存即可!

登录 或者   注册一个会员帐号 来参与讨论

更多
2010年08月11日 09:15 #2 作者: Joomla之门
Attachments 附件组件可以支持中文文件名,而且不需要修改组件本身文件。因为修改文件的方法会妨碍下次升级组件本身。

实现的方法如下:

1、直接通过 Attachments 上传中文名称的附件;
2、前台链接显示的目标是中文文件名,但是点击后无法下载,是因为上传过程中文件又被改名了,文件名变成了乱码;
3、通过 FTP 软件,找到服务器端附件所在目录,将刚才的附件文件名修改为原来的中文文件名。

就这么简单一步操作,就能实现中文文件名的附件顺利下载。

当然,这不能算是最佳方案。最好的解决途径就是作者改进这个软件,使它自动支持中文文件名附件。但是,我觉得这可能还需要 Joomla 核心的某些改进。因为我注意到 Joomla 很多“上传”功能都无法正确支持中文文件名。

另外,有人指出服务器本身也必须支持中文文件名,这个设置与 Joomla 无关,纯属服务器自身的参数。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论