1.首先思考一个问题上传到数据库是上传的图片还是图片地址这里我们上传的是图片地址,因为图片或音频存数据库中过大,数据库会崩掉。
下面是封装的文件上传的方法:
?php
/*
*@prame string key
*@prame string path
*@prame String maxSize
*@prame array allowMime
*@prame array allowFiletype
*@prame bool true
*
*auther wulei
*/
function upload($key,$path,$maxSize,$allowMime,$allowType,$ifFileName = true){
//第一步 判断错误码
if($_FILES[$key]['error']){
switch($_FILES[$key]['error']){
case 1:
$str = "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。";
break;
case 2:
$str = "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";
break;
case 3:
$str = "文件只有部分被上传。";
break;
case 4:
$str = "没有文件被上传。";
break;
case 6:
$str = "找不到临时文件夹。";
break;
case 7:
$str = "文件写入失败";
break;
}
return [0,$str];
}
//判断文件大小
if($_FILES[$key]['size']>$maxSize){
return [0,'传的文件超过最大限制'];
}
//判断文件的mime类型
if(!in_array($_FILES[$key]['type'],$allowMime)){
return [0,'不符合的mime类型'];
}
//判断文件的后缀
$info = pathinfo($_FILES[$key]['name']);
$sub = $info['extension'];
if(!in_array($sub,$allowType)){
return [0,'不符合的文件后缀'];
}
//判断是否是随机文件
if($ifFileName){
$name = uniqid().'.'.$sub;
}else{
$name = $info;
}
//拼接路径
$path = rtrim($path,'/').'/'.date('Y/m/d').'/';
//判断文件是否存在,不存在则创建
if(!file_exists($path)){
mkdir($path,0777,true);
}
//判断是否是上传文件
if(is_uploaded_file($_FILES[$key]['tmp_name'])){
if(move_uploaded_file($_FILES[$key]['tmp_name'],$path.$name)){
echo '文件上传成功';
return [1,$path.$name];
}else{
return[0,'上传文件失败'];
}
}else{
return [0,'文件不存在'];
}
}
2.html 页面
html>
head>
title>文件上传/title>
meta charset = "utf-8"/>
/head>
body>
form action = "onUpload.php" method = "post" enctype ="multipart/form-data">
!--input type = "text" name = "username"/>br/>-->
input type = "file" name = "file"/>br/>
input type = "submit" value ="提交"/>
/form>
/body>
3、下面我们链接数据库
这里我们直接使用了,看不懂的可以去看前面的封装的数据库方法那一篇文章
?php
//包含方法
include 'uploed.php';
include 'common.php';
//得到方法
$data = upload('file','image',pow(1024,2)*2,[
'image/png','image/jpeg','image/gif','image/wbmp'
],['png','jpg','jpeg','jpe','pjpeg','gif','wbmp','bmp']);
//这里进行数据库操作
if($data[0]){
$date['img_path'] = $data[1];
}
insert($link,'user',$date);
总结
以上所述是小编给大家介绍的php封装单文件上传到数据库(路径),希望对大家有所帮助!
您可能感兴趣的文章:- PHP实现单文件、多个单文件、多文件上传函数的封装示例
- PHP Laravel 上传图片、文件等类封装
- 封装ThinkPHP的一个文件上传方法实例
- PHP封装的多文件上传类实例与用法详解
- php封装的单文件(图片)上传类完整实例
- PHP实现原生态图片上传封装类方法
- PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
- PHP 一个比较完善的简单文件上传
- PHP单文件上传原理及上传函数的封装操作示例