现在用户在下载页下载文件时,文件为"日期+_一段串成生数字+扩展名,简单更改为上传时的文件名。
举例:
在下载栏目里上传一个名为phpcms.rar的文件,存入数据库后将更名为20120111103441956.rar(按上传时间命名),用户在下载页面下载后得到的文件名又为20120316_1043344596.rar(按下载时间命名),这样做的好处就不用说了,但是不利于用户体验。
现在简单修改一下上传名为phpcms.rar,存入数据库后名还是为20120111103441956.rar,但是用户下载文件后得到的文件名也为phpcms.rar.
具体步骤:
1.打开phpcmsmodulescontentfieldsdownfilesoutput.inc.php,将里面的内容替换为:
function downfiles($field, $value) { extract(string2array($this->fields[$field]['setting'])); $list_str = array(); $file_list = string2array($value); if(is_array($file_list)) { $nn=0; foreach($file_list as $_k=>$_v) { if($_v[fileurl]){ $filename = $_v[filename] ? $_v[filename] : L('click_to_down'); if($downloadlink) { $a_k = urlencode(sys_auth("i=$this->id&s=&m=1&f=$_v[fileurl]&d=$downloadtype&modelid=$this->modelid&catid=$this->catid", 'ENCODE', pc_base::load_config('system','auth_key'))); $list_str[] = "<a href='".APP_PATH."index.php?m=content&c=down&a_k={$a_k}&ds=$nn' target='_blank'>{$filename}</a>"; } else { $list_str[] = "<a href='{$_v[fileurl]}' target='_blank'>{$filename}</a>"; } } $nn++; } } return $list_str; }
2.打开phpcmsmodulescontentdown.php
3.搜索"//检查文章会员组权限",在上方添加
//获取$ds,根据传递过来的参数,判断对应的上传名 $tit = $rs['downfiles'] ; $ds=$_GET["ds"]; eval("$arr = ".$tit.'; '); $tit = $arr[$ds]['filename'];
4.搜索以下代码
$a_k = urlencode(sys_auth("i=$i&d=$d&s=$s&t=".SYS_TIME."&ip=".ip()."&m=".$m."&f=$f&modelid=".$modelid, 'ENCODE', $pc_auth_key));
将其改为
$a_k = urlencode(sys_auth("i=$i&d=$d&s=$s&t=".SYS_TIME."&ip=".ip()."&m=".$m."&f=$f&modelid=".$modelid."&tit=".$tit, 'ENCODE', $pc_auth_key));//新增."&tit=".$ti 传递上传文件名
5.搜索以下代码
$filename = date('Ymd_his').random(3).'.'.$ext;
将其改为
//修改下载文件名为上传文件名 $filename = $tit.'.'.$ext;
6.保存,收工。
说明:完美解决下载文件名称,使每个名称下载对应每个下载文件!
下载文件名可以在发表内容时自己指定,如下图: