先看截图,这张截图是来自于TP官方提供的手册(关键看截图中圈出来的地方)

从截图中可以看出,官方对此参数给出了3个参数值(一般情况下已经够用了),但若是非要自定义一个新的命名规则呢?那当然就得修改这个参数命名规则了——也就是写一个自定义函数,然后这里用自定义函数名代替(这里的自定义函数不能带参数)。
【注意】今天讨论的重点在于多文件上传,单文件上传的话基本上不用考虑这个命名的问题了。
下面在来看一张截图,假设这是我们的上传控件(也就是file表单,注意看截图中圈出来的地方)

接下来就是在上传的方法中设定上传参数了,重点在于设定“saveRule”的值。之前也看到过不少的文章有写道关于这个参数值的设定,但都不够详细(那些都是适合高手参考使用)。
假设我们要用我们自己的自定义函数来控制上传后的文件命名。
很简单,只需要做两步即可。不要眨眼。。。
【第一步】写一个自定义函数。操作流程如下:
A:新建一个php文件,文件名“common.php”(必须是这个名字,不能变哈)
B:这个文件放在哪里呢?当然是你开发的应用(若你开发的是管理后台,那你需要找的文件夹可能就是“Admin”了),然后再找到应用下的“Common”文件夹若文件件不存在,那就手动创建一个,注意严格区分大小写。然后把common.php放进去
C:在common.php里面写上你的自定义函数(函数的功能就是做各种处理,最终返回一个字符串,作为上传成功后的文件的名字)
D:到这里第一步就算完成了
第一步中的自定义函数,提供一个参考代码
<?php
//多文件上传,文件命名调用自定义函数
function get_uuid(){
$charid = strtoupper(md5(uniqid(mt_rand(), true)));
$uuid = substr($charid, 0, 8).substr($charid, 8, 4).substr($charid,12, 4).substr($charid,16, 4).substr($charid,20,12);
return strtolower($uuid);
}【第二步】在处理上传文件的方法里面设置“saveRule”。也就是在实例化“UploadFile”类后给这个类的“saveRule”属性赋值。第二步的参考代码如下:
$upload->saveRule = 'get_uuid'; // 使用自定义函数给文件命名
//$upload->saveRule = 'uniqid'; // 文件自动命名以上代码中的“get_uuid”可以修改的,只要和你定义的函数的名称保持一致就好,当然也不要故意去撞枪口哈。以上内容就是今天要讨论的东西了,虽然很肤浅,但真的很实用,尤其是对于一些正在被这个问题所困扰的童鞋们。
【重点如下】
第一:自定义函数存放的位置,这个位置不要搞错了哦,当然也要注意文件以及文件夹的名字(建议不要随意改动,且要注意大小写)
第二:自定义函数不能有参数,返回值就是一个字符串(也就是上传成功后的文件名)
-----------------------
最终的效果图如下:
-----------------------

上传后的图片命名:

好了,到这里就要结束了。
最佳答案