thinkphp文件上传
该方法已经测试过了,可以正常使用,我用的是用的是ThinkPHP3.2版本写的,如果想自己添加参数的话,请参考ThinkPHP3.2的文档,该方法的原理就是先实现文件的上传,然后获取文件的名字,再用函数获取文件的扩展名(如果想指定扩展名的话,此步骤可以省略,只需要定义新的名字就行)最后调用重命名函数,对文件进行重命名。
首先先写一个前台的表单,用于提交文件
<form action="__URL__/upload" enctype="multipart/form-data" method="post" >
<input type="text" name="name" />
<input type="file" name="photo" />
<input type="submit" value="提交" >
</form>
下面这个是文件上传函数,实现文件的上传
上传函数
public function upload(){
$upload = new \Think\Upload();// 实例化上传类
$oldFN = $_FILES;//获取图片的信息,在后面传给重命名函数
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');
// 设置附件上传类型
$upload->rootPath = './'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
$upload->replace = true;//如果存在同名文件就覆盖
$upload->autoSub = false;
//不使用子目录保存上传文件,即上传到指定的文件夹
$info = $upload->upload();
$this->renameFile($oldFN['photo']['name'], './');//调用重命名函数
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
$this->error('上传成功!');
}
}
重命名函数
下面这个是文件重命名函数(重命名为1,2,3)
public function renameFile($oldFN,$path){
for($i=0;$i<count($oldFN);$i++){
$extName = substr($oldFN[$i],strrpos($oldFN[$i],'.'));//获取扩展名
$newName = ($i+1)."$extName";//新的名字
rename($path.$oldFN[$i],$path.$newName);//重命名
}
}
如果有不懂,或者无法正常运行的地方,可以联系我哦。以后我会经常写一些自己的见解,写一些对大家有意义的文章,希望大家多多支持,也希望大家能够多提宝贵的意见。
One comment
来进修一下