最近刚好做了一个关于图片上传的操作,就把以前在培训时候的笔记翻出来,做了一个简单的图片上传。(才工作,不好勿喷~)
我之前学的yii2框架,现在公司用tp框架,不多说,上码!
if (IS_POST) {//判断是否为post数据
$count = M('custom_made')->where(array('uid' => $this->user['uid']))->count();//从存有用户提交图片信息的数据表中查询是否存在该用户的记录
if ($count == 0) {//判断是否重复提交
$cc_name = $_FILES['cc_pic']['name'];//数据是二维数组,['cc_pic']是前端上传图片input标签的name,['name']是客户端上传图片的name(含后缀
$check_name = './d/images/' . $cc_name;//./是根目录,文件存放在根目录d文件夹中images文件夹下的,以‘./d/images/’+上传图片的原始名保存(含后缀
$result = M('custom_made')->where(array('cc_pic' => $check_name))->count();//将上述需要进行查询的$check_name作为查询条件
if ($result < 1) {//判断图片名称是否重复
$cc_tmp_name = $_FILES['cc_pic']['tmp_name'];//服务端存储的临时文件名
//情况可能是这样的:前端编码utf8;数据库编码utf8;上传过程中因为是直接获取文件名,apache没有经过前端的编码处理,使得文件名编码方式为gbk,此时就需要转码了!
$cc_name_iconv = iconv('utf-8', 'gbk', $_FILES['cc_pic']['name']);//ps:连接数据库的时候,也要设置$connect->query("set names utf8")
$cc_type = $_FILES['cc_pic']['type'];//文件类型
$cc_size = $_FILES['cc_pic']['size'];//文件大小
//判断图片是否符合要求。要求为四中格式之一且大小小于等于2M(以b为单位:2*1024*1024 b
if ($cc_type == 'image/jpg' || $cc_type == 'image/gif' || $cc_type == 'image/png' || $cc_type == 'image/jpeg' && $cc_size <= 2097152) {
if (move_uploaded_file($cc_tmp_name, './d/images/' . $cc_name_iconv)) {//move_uploaded_file()第一个参数为临时存放的文件名,第二个参数为你需要移动的位置包含原始文件名
$map['cc_pic'] = './d/images/' . $cc_name;
$map['uid'] = $this->user['uid'];//用户名
$map['ctime'] = time();//上传时间
M('custom_made')->add($map);//存入数据库
$error = '文件上传成功!';
$this->assign('error', $error);//不要看见error就认为是错误提示,只是为了方便统一把正确与错误提示同名了!
$this->display();
}
} elseif ($cc_size > 2097152) {
$error = '图片过大,请重新选择小于2M的图片进行上传!';
$this->assign('error', $error);
$this->display();
} else {
$error = '图片格式不符合,请选择jpg/png/gif/jpeg格式的图片进行上传!';
$this->assign('error', $error);
$this->display();
}
} else {
$error = '图片名称已存在,请重命名图片进行上传!';
$this->assign('error', $error);
$this->display();
}
} else {
$error = '请勿重复上传文件!';
$this->assign('error', $error);
$this->display();
}} else {
$this->display();}
以下是前端最基础也是必须要的内容(因为用的tp框架,所以会有{$error}存在),不给用<>这个标签,将就看吧~
《form action="" method="post" enctype="multipart/form-data"》
《input type="file" name="cc_pic"》{$error}
《/form》