<?php
/*** 步骤:* 1.导入inlcude本类文件,如下函数upload 配置存储路径* 2.直接运用,配合前台,运行函数,注意前台form打开enctype* 3.若运行成功,转运文件至指定目录,获得返回值url物理全路径* 4.把指定存储的路径存入数据库*/
/** * 文件上传函数,把文件保存到指定路径 * @param * $filename:表单里写的文件名称 name="XXX" ,会自动识别$_FILES * @return 成功返回图片存储物理全路径,失败返回false */
function upload($filename){ include_once(__ROOT__.
'/common/Upload.class.php'
);
//引入类文件
$path = __ROOT__.
"/public/upload/"
.date(
"Y-m-d"
,time());
//定义路径
$upload =
new
upload($filename,$path);
//实例化对象
$url = $upload->uploadFile();
//调用成员方法,成功返回保存的物理地址
if
(empty($url)){
return
false
; }
return
$url; }
/** * 修改会员信息 * @param $id 哪位会员 $data修改的值[数组形式] * @return 成功返回影响行数 ;失败返回false */
function update_user($id,$data){ $info = get_user($id);
//查询出此友情链接的信息
//判断有删除图片操作,清空图片地址
if
(@$data[
'del_pic'
]){ unlink(__ROOT__.
'/public/'
.$info[
'user_img'
]); unset($data[
'del_pic'
]); $data[
'user_img'
] =
" "
; }
if
(!empty($_FILES[
'user_img'
][
'name'
])){
@unlink
(__ROOT__.
"/public/"
.$info[
'user_img'
]);
//先删除原来文件exit;
$url = upload(
'user_img'
);
//移动文件
if
($url ===
false
){
return
false
; } $data[
'user_img'
] = strstr($url,
"upload"
);
//赋新地址值
} $user = M(
'cms_user'
); $data[
'password'
] = md6($data[
'password'
] ); $where =
" user_id = $id "
; $re = $user->where($where)->data($data)->update();
// echo $link->getLastSql();exit;
if
($re){
return
true
; }
return
false
; }
//--------------------------以上为类的应用方法----------------------
//------------------------------类开始-----------------------------
class Upload{
protected
$fileName;
//文件名称
protected
$maxSize;
//文件最大大小
protected
$allowMime;
//允许的图片范围
protected
$allowExt;
//允许的文件后缀名
protected
$uploadPath;
//设置文件上传路径
protected
$imgFlag;
//是否开启检测真实图像
protected
$fileInfo;
protected
$error;
//返回的文件错误
protected
$ext;
//获取的文件后缀
public
function
__construct
($fileName=
'myFile'
,$uploadPath=
'./uploads'
,$imgFlag=
true
,$maxSize=
5242880
,$allowExt=array(
'jpeg'
,
'jpg'
,
'png'
,
'gif'
),$allowMime=array(
'image/jpeg'
,
'image/png'
,
'image/gif'
)){ $
this
->fileName=$fileName; $
this
->maxSize=$maxSize; $
this
->allowMime=$allowMime; $
this
->allowExt=$allowExt; $
this
->uploadPath=$uploadPath; $
this
->imgFlag=$imgFlag; $
this
->fileInfo=$_FILES[$
this
->fileName]; }
/** * 检测上传文件是否出错 * @return boolean */
protected
function
checkError
(){
if
(!is_null($
this
->fileInfo)){
if
($
this
->fileInfo[
'error'
]>
0
){
switch
($
this
->fileInfo[
'error'
]){
case
1
: $
this
->error=
'超过了PHP配置文件中upload_max_filesize选项的值'
;
break
;
case
2
: $
this
->error=
'超过了表单中MAX_FILE_SIZE设置的值'
;
break
;
case
3
: $
this
->error=
'文件部分被上传'
;
break
;
case
4
: $
this
->error=
'没有选择上传文件'
;
break
;
case
6
: $
this
->error=
'没有找到临时目录'
;
break
;
case
7
: $
this
->error=
'文件不可写'
;
break
;
case
8
: $
this
->error=
'由于PHP的扩展程序中断文件上传'
;
break
; }
return
false
; }
else
{
return
true
; } }
else
{ $
this
->error=
'文件上传出错'
;
return
false
; } }
/** * 检测上传文件的大小 * @return boolean */
protected
function
checkSize
(){
if
($
this
->fileInfo[
'size'
]>$
this
->maxSize){ $
this
->error=
'上传文件过大'
;
return
false
; }
return
true
; }
/** * 检测扩展名s * @return boolean */
protected
function
checkExt
(){ $
this
->ext=strtolower(pathinfo($
this
->fileInfo[
'name'
],PATHINFO_EXTENSION));
if
(!in_array($
this
->ext,$
this
->allowExt)){ $
this
->error=
'不允许的扩展名'
;
return
false
; }
return
true
; }
/** * 检测文件的类型 * @return boolean */
protected
function
checkMime
(){
if
(!in_array($
this
->fileInfo[
'type'
],$
this
->allowMime)){ $
this
->error=
'不允许的文件类型'
;
return
false
; }
return
true
; }
/** * 检测是否是真实图片 * @return boolean */
protected
function
checkTrueImg
(){
if
($
this
->imgFlag){
if
(!
@getimagesize
($
this
->fileInfo[
'tmp_name'
])){ $
this
->error=
'不是真实图片'
;
return
false
; }
return
true
; } }
/** * 检测是否通过HTTP POST方式上传上来的 * @return boolean */
protected
function
checkHTTPPost
(){
if
(!is_uploaded_file($
this
->fileInfo[
'tmp_name'
])){ $
this
->error=
'文件不是通过HTTP POST方式上传上来的'
;
return
false
; }
return
true
; }
/** *显示错误 */
protected
function
showError
(){ exit(
'<span style="color:red">'
.$
this
->error.
'</span>'
); }
/** * 检测目录不存在则创建 */
protected
function
checkUploadPath
(){
if
(!file_exists($
this
->uploadPath)){ mkdir($
this
->uploadPath,
0777
,
true
); } }
/** * 产生唯一字符串 * @return string */
protected
function
getUniName
(){
return
md5(uniqid(microtime(
true
),
true
)); }
/** * 上传文件 * @return string */
public
function
uploadFile
(){
if
($
this
->checkError()&&$
this
->checkSize()&&$
this
->checkExt()&&$
this
->checkMime()&&$
this
->checkTrueImg()&&$
this
->checkHTTPPost()){ $
this
->checkUploadPath(); $
this
->uniName=$
this
->getUniName(); $
this
->destination=$
this
->uploadPath.
'/'
.$
this
->uniName.
'.'
.$
this
->ext;
if
(
@move
_uploaded_file($
this
->fileInfo[
'tmp_name'
], $
this
->destination)){
return
$
this
->destination; }
else
{ $
this
->error=
'文件移动失败'
; $
this
->showError(); } }
else
{ $
this
->showError(); } } }