刚接触后台:做了一个php的图片文件上传
第一步:
首先,注意文件上传只能使用POST请求,并且要设置响应的属性,红色部分的属性必须添加,否则不能是上传,html中的表单
<form action="demo_upload.php" method="POST" enctype="multipart/form-data">
<!-- 、文件上传的表单区域 -->
<input type="file" name="file">
<input type="submit" value="提交" />
</form>
第二步:file文件的接收的几个数组属性,在提交的时候,我们一定会接收到file文件,怎么去判断file文件的相关内容,就必须值file文件的属性
我们通过$_FILES["file"]获取相关文件的属性信息,打印出来如下
var_dump($_FILES['file']);
array(5) { ["name"]=> string(8) "aaaa.jpg" //名字 ["type"]=> //文件的格式 string(10) "image/jpeg" ["tmp_name"]=> //后台的临时的名字 string(25) "D:\apache\tmp\php94D4.tmp" ["error"]=> //错误信息 int(0) ["size"]=> //大小 int(20915) }
第三步:封装一个工具类,用来上传文件;
<?php
/*
*上传文件的信息
*/
function upload($file,$allow = array('gif','png','jpg','jpeg')){
if(!is_array($file)){ //不是数组,就不存在上传的文件
return array(false,"当前不是上传的文件信息");
}
//判读上传文件的错误信息
$errorinfo = '';
switch($file['error']){
case 1:
$errorinfo = "文件超过服务器的限制";
break;
case 2:
$errorinfo = "文件超过浏览器允许的大小";
break;
case 3:
$errorinfo = "文件只上传了一部分";
break;
case 4:
$errorinfo = "没有选中要上传的文件";
break;
case 6:
$errorinfo = "找不到服务器的临时目录";
break;
case 7:
$errorinfo = "文件上传的路径不可写";
break;
}
//说明出错了
if($errorinfo){
return array(FALSE,$errorinfo);
}
//没有文件的错误信息,表示没有问题,接下来就要获取文件名字
$extension = getFileExtendtion($file['name']);
//判断文件是否有后缀名字
if(!$extension){
return array(FALSE,'文件没有后缀名');
}
if(!in_array($extension,$allow)){
return array(FALSE,'文件格式不支持');
}
//重新命名
$filename = getRandonFilename();
$filename .='.'.$extension;
//移动文件,第二个参数便是文件放置的路径,这里直接写的名字,就和次代码文件一直
if(!@move_uploaded_file($file['tmp_name'],$filename)){
return array(FALSE,"文件上传失败");
}
return $filename;
}
//截取后缀的名字
function getFileExtendtion($filename){
if(strrpos($filename,'.')){
return substr($filename,strrpos($filename,'.')+1);
}
return FALSE;
}
//获取随机名字
function getRandonFilename(){
$filename= '';
$filename .= date('YmdHis');
$str = 'abcdefghijklmnopqrxtuvwxyfjiojjkjklz';
for($i = 0;$i < 6;$i++){
$filename .= $str[mt_rand(0,25)];
}
return $filename;
}
?>
第四步:上传
<?php
//设置浏览器解析编码格式
//header('Content-type:text/html;charset=utf-8');
header("Content-type: text/html; charset=gb2312");
include_once 'upload.php';
echo "<pre>";
//这是个人打印的信息
var_dump($_POST);
var_dump($_FILES['file']);//上传文件判读是否选中了文件
if(empty($_FILES['file'])){
die('没有上传文件');
}
//判断上传文件返回的信息
$res =upload($_FILES['file']);
if(is_array($res)){
exit($res[1]);
}else{
echo '文件上传成功,文件路径为:' . $res;
}
?>
完毕,thank you!