今天学习了一下PHP的文件上传,这块的内容,简单的通过from表单的方式上传的。
因为不熟悉,踩了不少坑,废话不说,直接上代码
<form action="" enctype="multipart/form-data" method="post" name="uploadfile">上传文件:
<input type="file" name="upfile">
<br>
<input type="submit" value="上传">
</form>
1.判断是否有文件函数 is_uploaded_file()
这里有个问题我直接判断
if(is_uploaded_file($_FILES['upfile']['tmp_name'])){
但是直接执行的时候报错说是没有定义的变量 $_FILES ,是因为我刚进来的时候还没上选择操作,文件不存在,我加了一个判断
if($_FILES && is_uploaded_file($_FILES['upfile']['tmp_name'])){
如果前面不存在,后面直接就不用执行,就好了。
2.获取上传的一些参数
$upfile = $_FILES["upfile"];
//获取数组里面的值
$name = $upfile["name"]; //上传文件的文件名
$type = $upfile["type"]; //上传文件类型
$size = $upfile["size"]; //上传文件大小
$tmp_name = $upfile["tmp_name"]; //上传文件的临时存放路径
3.判断文件类型
//判断是否为图片
switch ($type){
case 'image/pjpeg':$oktype=true;
break;
case 'image/jpeg':$oktype=true;
break;
case 'image/gif':$oktype=true;
break;
case 'image/png':$oktype=true;
break;
}
4.上传到指定目录
if ($oktype){
/**
* 0:文件上传成功<br/>
* 1:超过了文件大小,在php.ini文件中设置<br/>
* 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/>
* 3:文件只有部分被上传<br/>
* 4:没有文件被上传<br/>
* 5:上传文件大小为0
*/
$error = $upfile["error"]; //上传后返回的值
echo "=======================<br/>";
echo '上传的文件名'.$name."<br/>";
echo "上传文件类型是:".$type."<br/>";
echo "上传文件大小是:".$size."<br/>";
echo "上传后系统返回的值是:".$error."<br/>";
// echo "上传文件的临时存放路径是:".$tmp_name."<br/>";
//上传文件的文件名
$imageFile = 'imageFile';
//判断是否有些文件目录
if(file_exists($imageFile)){
//有些目录直接上传 move_uploaded_file
move_uploaded_file($tmp_name,"./$imageFile/".$name);
}else{
// file_put_contents($imageFile,null); 创建文件
// madir 创建文件 第一个参数是文件目录,第二个读写格式
mkdir ('./'.$imageFile,0777,true);
move_uploaded_file($tmp_name,"./$imageFile/".$name);
}
$destination = "./$imageFile/".$name;
echo "开始移动上传文件<br/>";
// echo $destination; die;
echo "================<br/>";
echo "上传信息:<br/>";
if($error==0){
echo "文件上传成功啦!";
echo "<br>图片预览:<br>";
echo "<img src=".$destination.">";
//echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
}elseif ($error==1){
echo "超过了文件大小,在php.ini文件中设置";
}elseif ($error==2){
echo "超过了文件的大小MAX_FILE_SIZE选项指定的值";
}elseif ($error==3){
echo "文件只有部分被上传";
}elseif ($error==4){
echo "没有文件被上传";
}else{
echo "上传文件大小为0";
}
}else{
echo "请上传jpg,gif,png等格式的图片!";
}
运行即可上传文件到imageFile目录,大功告成!!