登录 注册

登录

问题 docman 组件 下载中文名文件时乱码?有高手解决过这个问题吗

更多
2008年12月25日 11:33 #1 作者: zhangyunwu1986
我用的是:windows 环境,JOOMLA是1.5.8中文版本.用docman组件上传了中文名的的文件,后台和前台的文件名都显示正常.但是点击下载的时候就出现文件名是乱码了,下载保存在本地的文件名也是乱码.有高手解决过这个问题吗?其他的上传下载组件也有这样的问题,比如com_jdownloads

<a href="www.ranykx.cn">瑞安农业科学
<a href="www.zjzhongsheng.com">中盛能源

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

更多
更多
2008年12月25日 13:43 #3 作者: zhangyunwu1986

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

更多
2008年12月26日 09:30 #4 作者: zhangyunwu1986
白大哥的方法是直接把上传的文件名该成时间戳,这样的修改还没有真正达到目的.昨天试了另外一种方法,如下:找到DOCMAN_file.class.php文件中的download函数定义,修改成
function download($inline = false)
    {
		// Fix [3164]
		while (@ob_end_clean());
 
		if( $this->_isLink ){
			header( "Location: " . substr( $this->name , 6 ) );
			return;
		}
 
		$fsize = @filesize($this->path.$this->name);
		$mod_date = date('r', filemtime( $this->path.$this->name ) );
 
		$cont_dis = $inline ? 'inline' : 'attachment';
 
		// required for IE, otherwise Content-disposition is ignored
		if(ini_get('zlib.output_compression'))  {
			ini_set('zlib.output_compression', 'Off');
		}
 
        header("Pragma: public");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Expires: 0");
 
        header("Content-Transfer-Encoding: binary");
		header('Content-Disposition:' . $cont_dis .';'
			. ' filename="' . iconv('utf-8','gb2312',$this->name) . '";'
			. ' modification-date="' . $mod_date . '";'
			. ' size=' . $fsize .';'
			); //RFC2183
        header("Content-Type: "    . $this->mime );			// MIME type
        header("Content-Length: "  . $fsize);
 
        if( ! ini_get('safe_mode') ) { // set_time_limit doesn't work in safe mode
		    @set_time_limit(0);
        }
 
 		// No encoding - we aren't using compression... (RFC1945)
		//header("Content-Encoding: none");
		//header("Vary: none");
 
 
        $this->readfile_chunked($this->path.$this->name);
        // The caller MUST 'die();'
    }
这样的修改也是有点小BUG的,上传到服务器上的文件会乱码,但是显示和下载的时候都是原中文名

<a href="www.ranykx.cn">瑞安农业科学
<a href="www.zjzhongsheng.com">中盛能源

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

更多
2008年12月26日 09:34 #5 作者: zhangyunwu1986
只修改了第21行的代码,原21行代码为
. ' filename="' . $this->name . '";'

<a href="www.ranykx.cn">瑞安农业科学
<a href="www.zjzhongsheng.com">中盛能源

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

更多
2008年12月26日 10:25 #6 作者: Joomla之门
呵呵,我对编程不懂的。我提供的那个链接也是其他人的博客。

感谢你找到了解决方案并分享!

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

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

更多
2009年03月10日 16:52 #7 作者: olizr

只修改了第21行的代码,原21行代码为

. ' filename="' . $this->name . '";'

非常感谢zhangyunwu1986,我用他提供的方法解决了下载乱码的问题,FF/IE/Chrome测试全部通过!

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

更多
2009年04月03日 16:47 #8 作者: lym
请问zhangyunwu1986 :
按照您的这种方法,我测试了一下,上载和下载,在前台和后台看到的文件名都是中文正确的了没有问题。
但是,在服务器上/dmdocuments里的实际文件名却变成乱码了。

另外,我上载了一个文本文件,在文件里写了一些中文字符。
通过前台的"查看"按钮察看,显示的却是乱码,但是现在下来了打开内容却是中文的。
请帮忙救急。谢谢。

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

更多
2009年04月03日 16:53 #9 作者: zhangyunwu1986
不好意思。这个BUG我在1楼的时候已经提到过的。查看应该是直接查看服务器上的文件名,所以就乱码了吧

<a href="www.ranykx.cn">瑞安农业科学
<a href="www.zjzhongsheng.com">中盛能源

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

更多
2009年04月07日 10:52 #10 作者: lym
就是你说的这个意思。

另外,通过前台"查看"按钮查看中文文本文件时,里面的内容也是乱码。

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