PHPCMSV9下载模型小技巧:更改下载文件名为上传时的附件的名称

来自:互联网
时间:2018-08-26
阅读:

现在用户在下载页下载文件时,文件为"日期+_一段串成生数字+扩展名,简单更改为上传时的文件名。

举例:

在下载栏目里上传一个名为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.保存,收工。

说明:完美解决下载文件名称,使每个名称下载对应每个下载文件!

下载文件名可以在发表内容时自己指定,如下图: 

返回顶部
顶部