基於TP自帶的上傳文件的類, Think/Upload.class.php
下面是上傳的具體方法
/**
* 圖片上傳處理
* @param [String] $path [保存文件夾名稱]
* @param [String] $thumbWidth [縮略圖寬度]
* @param [String] $thumbHeight [縮略圖高度]
* @return [Array] [圖片上傳信息]
*/
function _upload($path,$thumbWidth = '' , $thumbHeight = '') {
$obj = new \Think\Upload();// 實例化上傳類
$obj->maxSize = C('UPLOAD_MAX_SIZE') ;// 設置附件上傳大小
$obj->savePath =C('UPLOAD_PATH').$path.'/'; // 設置附件上傳目錄
$obj->exts = C('UPLOAD_EXTS');// 設置附件上傳類型
$obj->saveName = array('uniqid','');//文件名規則
$obj->replace = true;//存在同名文件覆蓋
$obj->autoSub = true;//使用子目錄保存
$obj->subName = array('date','Ymd');//子目錄創建規則,
$info = $obj->upload();
// return $info;
if(!$info) {
return array('status' =>0, 'msg'=> $obj->getError() );
}else{
if($info){ //生成縮略圖
$image = new \Think\Image();
foreach($info as $file) {
$thumb_file = C('UPLOAD_PATH') . $file['savepath'] . $file['savename'];
$save_path = C('UPLOAD_PATH') . $file['savepath'] . 'mini_' . $file['savename']; //保存縮略圖的規則
$image->open( $thumb_file )->thumb($thumbWidth,$thumbHeight,\Think\Image::IMAGE_THUMB_FILLED)->save($save_path);
return array(
'status' => 1,
'savepath' => $file['savepath'],
'savename' => $file['savename'],
'pic_path' => $file['savepath'] . $file['savename'],
'mini_pic' => $file['savepath'] . 'mini_' .$file['savename']
);
// @unlink($thumb_file); //上傳生成縮略圖以后刪除源文件
}
}else{
foreach($info as $file) {
return array(
'status' => 1,
'savepath' => $file['savepath'],
'savename' => $file['savename'],
'pic_path' => $file['savepath'].$file['savename']
);
}
}
}
}
在配置文件中設置相關屬性
//圖片上傳 'UPLOAD_MAX_SIZE' => 13058176, //最大上傳大小 'UPLOAD_PATH' => './Uploads/', //文件上傳保存路徑 //'UPLOAD_PATH' => './', //文件上傳保存路徑 'UPLOAD_EXTS' => array('jpg','jpeg','gif','png'),
上傳:
1、設置表單的enctype屬性
2、根目錄創建 Uploads 目錄
3、調用方法,傳參(保存的路徑,寬度,高度)
$upload = _upload('Content','300','300'); //文件上傳信息及縮略圖
完成后看下打印效果
文件路徑
mini_XXXXXXX.jpg 縮略圖完成
至此上傳文件及縮略圖就完成了