Daily Archives: 2012年03月15日

Vtiger中文文件名的文档上传下载失败

依然是中文编码问题,按以下修改即可。

1、修改 data/CRMEntity.php 中的 uploadAndSaveFile($id,$module,$file_details)方法代码:
$upload_status = move_uploaded_file($filetmp_name,$upload_file_path.$current_id.”_”.$binFile);
修改为
$upload_status = move_uploaded_file($filetmp_name,$upload_file_path.$current_id.”_”.urlencode($binFile));

2、修改 modules/uploads/downloadfile.php

注释掉 39 行:
//$name = html_entity_decode($name, ENT_QUOTES, $default_charset);

在 39行后增加一行代码:
$name=urlencode($name);

在 41 行新增:
$toChineseName = iconv(“utf-8″,”gb2312”,$name);

将52 行
header(“Content-Disposition: attachment; filename=$name”);
修改为
header(“Content-Disposition: attachment; filename=$toChineseName”);
在服务器上存储将中文编码后的 UTF-8 字符串,这样可以避免在不同类型服务器上出现字符乱码,在下载文件的时候,将文件用 GB2312 编码,这样做的原因是,有时候火狐不能识别 E6%BC%94%E8%AE%B2.docx 这样的编码而造成文件名重名不正确。