php tp 文件上传,ThinkPHP 上传文件方法

ThinkPHP 上传文件方法

准备工作

在ThinkPHP的家目录中新建文件夹 Uploads

新建图片表

字段名

类型

是否为空

自增

索引

备注

id

int

primary key

无符号的自增ID

savename

varchar(255)

图片名

path

varchar(255)

图片路径

add_time

varchar(255)

图片添加的时间

参数说明

/**

* 上传文件类型控制

* @param string $path 字符串 保存文件路径示例: /Upload/image/

* @param integer $id 图片ID

* @param string $format 文件格式限制

* @param integer $maxSize 允许的上传文件最大值 52428800

* @param integer $aas 判断返回方式 1为ajax返回 2为rerurn

* @return booler 返回ajax的json格式数据

*/

调用

ajax_upload($path,$id,$format,$maxSize,$$aas);

方法

function ajax_upload($path='file',$id='',$format='empty',$maxSize='52428800',$aas=1){

ini_set('max_execution_time', '0');

// 去除两边的/

$path=trim($path,'/');

// 添加Upload根目录

$path=strtolower(substr($path, 0,6))==='Uploads' ? ucfirst($path) : 'Uploads/'.$path;

// 上传文件类型控制

$ext_arr= array(

'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),

'photo' => array('jpg', 'jpeg', 'png'),

'flash' => array('swf', 'flv'),

'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),

'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2','pdf')

);

if(!empty($_FILES)){

// 上传文件配置

$config=array(

'maxSize' => $maxSize, // 上传文件最大为50M

'rootPath' => './', // 文件上传保存的根路径

'savePath' => '/'.$path.'/', // 文件上传的保存路径(相对于根路径)

'saveName' => array('uniqid',time()), // 上传文件的保存规则,支持数组和字符串方式定义

'autoSub' => false, // 自动使用子目录保存上传文件 默认为true

'exts' => isset($ext_arr[$format])?$ext_arr[$format]:'',

);

// 实例化上传

$upload=new \Think\Upload($config);

// 调用上传方法

$info=$upload->upload();

$data=array();

if(!$info){

// 返回错误信息

$error=$upload->getError();

$data['error_info']=$error;

if($aas == 1){

echo json_encode($data);

}elseif($aas == 2){

return $data;

}else{

echo json_encode($data);

}

}else{

if($id){

// 存在ID

foreach($info as $file){

$img=D('img')->find($id); //查询出存在的图片信息

unlink('.'.$img['path'].$img['savename']); //删除图片

$image['savename']=$file['savename'];

$image['path']=$file['savepath'];

D('img')->where(array('id'=>$id))->save($image);

$data['name']=trim($file['savepath'].$file['savename'],'.');

$data['ImagesId']=$id;

if($aas == 1){

echo json_encode($data);

}elseif($aas == 2){

return $data;

}else{

echo json_encode($data);

}

}

}else{

// 没有ID

foreach($info as $file){

$image['savename']=$file['savename'];

$image['path']=$file['savepath'];

$image['add_time']=time();

$image_id=D('img')->add($image);

$data['name']=trim($file['savepath'].$file['savename'],'.');

$data['ImagesId']=$image_id;

if($aas == 1){

echo json_encode($data);

}elseif($aas == 2){

return $data;

}else{

echo json_encode($data);

}

}

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值