#1 prince
用法:把这些动作放到SP的控制器里边,要用的时候调用就行。
新手写的,并且参考了网上的资料,给有跟我一样需要的人参考,也欢迎完善。请大家多指教(跟帖即可)
function UploadPic(){//显示文件上传网页界面下面是表单:
$this -> cp_id = $_GET["cp_id"];
$this -> display("upimg2.html");
}
function pictureSave(){//用于保存文件及把文件名保存到数据库
$upPath = '../img/user/'.$_SESSION[username].'/';//上传路径,$_SESSION[username]为用户名(因为我存文件是按用户目录存的,这里根据自己需要修改是否需要这样就行了)
if ($_FILES["file"]["error"] > 0){//如果文件出错
return $_FILES["file"]["error"];//返回文件出错信息
}else{//否则进行文件操作及记录文件名到数据库
$file = fopen($_FILES["file"]["tmp_name"], "rb");//以只读模式打开文件
$bin = fread($file, 2); //只读取前2字节
fclose($file);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$type_r = $this -> file_judge($typeCode);//用file_judge()判断文件是否为指定文件类型并获取文件扩展名
if ($type_r[0] == true){//如果文件合法则进行以下操作
move_uploaded_file($_FILES["file"]["tmp_name"] , $upPath.date("Y-m-d_His").$type_r[1]);//移动临时文件到指定目录下的指定文件名
$picture = date("Y-m-d_His") . $type_r[1];//设置保存的文件名
$cplist_album = spClass("cplist_album");//这里是model
$newPic = array('cp_id' => $this -> spArgs('cp_id'),'picture' => $picture,'picDesc' => $this -> spArgs('picDesc'));//设置要记录的字段及值
$cplist_album -> create($newPic);//写数据库
if ($cplist_album == false){//如果记录到数据库失败,则提示并跳转回上传页面
$msg = '上传图片时记录到数据库出错,请向系统管理员报告此问题!';
$url = spUrl("add_new","UploadPic",'cp_id='.$this -> spArgs('cp_id'));//这里是构造跳转URL
$this -> error($msg,$url);//开始跳转
}
else{//如果记录到数据库成功则做如下操作
$msg = '上传图片成功';//提示信息
$url = spUrl("add_new","UploadPic".'&cp_id='.$this -> spArgs('cp_id'));//跳转回上传页
$this -> success($msg,$url);//开始跳转
}
}
else{//如果文件类型非指定类型
//return false;
echo 'You want to upload files is lawlessness file.';
exit;
}
}
}
//file_judge()判断文件是否是指定类型,如果合法则以数组类型返回true和扩展名
function file_judge($typeValue){
switch ($typeValue){
case 255216://这个是jpg类型
$typeArray = array(true , '.jpg');
return $typeArray;
break;
case 7173:
$typeArray = array(true , '.gif');
return $typeArray;
break;
case 13780:
$typeArray = array(true , '.png');
return $typeArray;
break;
default:
return $typeArray = array(false,'');//默认返回false和空
}
}