文件上传处理函数

<?php
/*
*
*文件上传处理函数
*@param string filename 要上传的文件表单项名
*@param string $path 上传文件保存路径
*@param array  $typelist允许的文件类型
*@return array $res 两个单元:["error"] false:失败,true:成功
*						{"info"} 存放失败原因或成功的文件名
*/
function uploadeFile($filename,$path,$typelist=null)
{
	//1、获取要上传的名字
	$upfile = $_FILES[$filename];
	if(empty($typelist))
	{
		$typelist=array("image/gif","image/jpg","image/jpeg","image/png");//允许的文件类型
	}
	
	//$path="uploads";//指定上传的的保存路径(相对的)
	$res=array("erroy"=>false);//存放返回的结果
	
	//2、过滤上传文件的错误号
	if($upfile["error"]>0)
	{
		switch($upfile["error"])
		{
			case 1:
			$res["info"]="上传的文件超过了php.ini中uploade_max_filesize选项限制";
			break;
			case 2:
			$res["info"] = "上传的文件的大小超过了HTMl表单中MAX_FILE_SIZE 选项";
			break;
			case 3:
			$res["info"] = "文件只有部分被上传";
			case 4:
			$res["info"] = "没有文件被上传";
			break;
			case 6:
			$res["info"] = "找不到临时文件";
			break;
			case 7:
			$res["info"] = "文件写入失败";
			break;
			default:
			$res["info"] = "未知错误!";
		}
		return $res;
	}
	//3.本次文件大小的限制
	if($upfile["size"]>100000)
	{
		$res["info"] = "上传文件过大!";
	}
	//4、过滤类型
	if(!in_array($upfile["type"],$typelist))
	{
		$res["info"] = "上传类型不符!".$upfile["type"];
	}
	//5、初始化下信息(为图片产生一个随机名字)
	$fileinfo = pathinfo($upfile["name"]);
	do{
		$newfile = date("YmdHis").rand(1000,9999).".".$fileinfo["extension"];
	}while(file_exists($newfile));
	
	//6、执行上传处理
	if(is_uploaded_file($upfile["tmp_name"]))
	{
		if(move_uploaded_file($upfile["tmp_name"],$path."/".$newfile))
		{
			//将上传成功后的文件名赋值给返回数组
			$res["info"]=$newfile;
			$res["error"]=true;
			return $res;
		}else{
			$res["info"] = "上传文件失败!";
		}
	}else{
		$res["info"] = "不是一个上传的文件";
	}
	return $res;
}
有一些小问题需要修正: 1. 在使用 `imagecreatefromjpeg()` 函数创建源图像资源,应该使用 `$sre_image` 作为变量名,而不是 `$src_image`。 2. 在使用 `imagecopyresized()` 函数进行缩略图处理,应该使用 `$sre_image` 作为源图像资源变量名,而不是 `$src_image`。 3. 在使用 `imagejpeg()` 函数输出缩略图,应该将参数 `$small_upfile` 改为 `null`,以直接输出图像流到浏览器。 修改后的代码如下: ``` <form method="post" action="" enctype="multipart/form-data"> <h3>缩略图显示上传的图片</h3> <input type="file" name="picture"><br> <input type="submit" name="submit" value="提交"> </form> <?php if(isset($_POST['submit'])) { $filename = $_FILES['picture']['name']; $type = $_FILES['picture']['type']; $upfile = "image/small.jpeg"; $small_upfile = "image/image_small.jpeg"; if(! $filename) { echo "<script>alert('文件不存在!')</script>"; } else if($type != 'image/pjpeg') { echo "<script>alert('文件格式不正确!')</script>"; } else { move_uploaded_file($_FILES['picture']['tmp_name'], $upfile); $dst_w = 150; $dst_h = 150; $sre_image = imagecreatefromjpeg($upfile); $src_w = imagesx($sre_image); $src_h = imagesy($sre_image); $dst_image = imagecreatetruecolor($dst_w, $dst_h); imagecopyresized($dst_image, $sre_image, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h); header('Content-Type: image/jpeg'); imagejpeg($dst_image, null); imagedestroy($sre_image); imagedestroy($dst_image); } } ?> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值