单文件上传之上传图片

本文详细介绍了一个简单的PHP文件上传过程,包括HTML表单设置、文件上传错误处理、文件大小及类型验证,以及如何将文件移动到指定目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件上传表单:

 

// upload.html
<form action="file.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
</form>

 

 

接收文件

 

// file.php
<?php
header("Content-type: text/html; charset=utf-8");
var_dump($_FILES);
if($_FILES['file']['error']>0){
	switch ($_FILES['file']['error']) {
	//错误码不为0,即文件上传过程中出现了错误
        case '1':
            echo '文件过大';
            break;
        case '2':
            echo '文件超出指定大小';
            break;
        case '3':
            echo '只有部分文件被上传';
            break;
        case '4':
            echo '文件没有被上传';
            break;
        case '6':
            echo '找不到指定文件夹';
            break;
        case '7':
            echo '文件写入失败';
            break;
        default:
            echo "上传出错<br/>";
    }
}else{
	//错误码为0,即上传成功,可以进行后续处理
	 //判断文件是否超出了指定的大小
    //单位为byte
    $MAX_FILE_SIZE = 100000;
    if($_FILES['file']['size'] > $MAX_FILE_SIZE){
    //判断,如果上传的文件,大小超出了我们给的限制范围,退上传并产生错误提示
		exit("文件超出指定大小");
	}else{
		$allowSuffix = array('jpg','gif');
		//定义允许的后缀名数组
		$myImg = explode('.', $_FILES['file']['name']);
		$myImgSuffix = array_pop($myImg);
		/*
		根据上传文件名获取文件的后缀名
		使用in_array()函数,判断上传文件是否符合要求
		当文件后缀名不在我们允许的范围内时退出上传并返回错误信
		息
		*/
		if(!in_array($myImgSuffix, $allowSuffix)){                           
			exit("文件后缀名不符");
		}
		/*
		mime类型和文件后缀名的对应关系,
		我们可以通过很多途径查询到,
		为了避免用户自主修改文件后缀名造成文件无法使用。
		mime类型也必须做出限制检查mime类型,
		是为了防止上传者直接修改文件后缀名
		导致文件不可用或上传的文件不符合要求。
		*/
		//数组内容为允许上传的mime类型
		$allowMime = array(
					"image/jpg",
					"image/jpeg",
					"image/pjpeg",
					"image/gif"
					);
		if(!in_array($_FILES['file']['type'], $allowMime)){                   //判断上传文件的mime类型是否在允许的范围内
			  exit('文件格式不正确,请检查');
			//如果不在允许范围内,退出上传并返回错误信息
		}
		//第四步生成指定的的路径和文件名
		$path = "upload/images/";
		$name = date('Y').date('m').date("d").date('H').
date('i').date('s').rand(0,9).'.'.$myImgSuffix;
		//第五步,判断是否是上传文件
		if(is_uploaded_file($_FILES['file']['tmp_name'])){
			//第六步,移动文件到指定位置
			if(move_uploaded_file($_FILES['file']['tmp_name'],$path.$name)){
				//提示文件上传成功
				echo "上传成功";                      
			}else{
				/*
				文件移动失败,检查磁盘是否有足够的空间,
				或者linux类系统中文件夹是否有足够的操作权限
				*/
					echo '上传失败';                                              
				}
		}else{
				echo '不是上传文件';
			}
	}
}
?>


注意需保证服务器上存在此目录: $path = "upload/images/";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值