PHP中上传图片,简单分享

文件上传主要用到一个函数:move_uploaded_file(string $filename,string destination),这个函数有两个参数,第一个是上传的临时文件夹名,第二个是把文件上传到哪个位置的文件名。

注意:

    第一个参数是获取到的文件名,而不是自己命名的文件名

    第二个参数是上传的文件路径加新的文件名


第一步通过表单获取上传的文件信息

<form action="upload_image.php" enctype="multipart/form-data" method="POST">
       <input type="file" name="filename" />
        <input type="submit" value="上传" />
</form>

第二步,接收文件信息    利用$_FILES超全局变量获取提交的文件信息

$_FILES['filename']  //可以打印这个信息,看看有文件信息是什么

array(5) { ["name"]=> string(8) "1234.jpg" 
           ["type"]=> string(10) "image/jpeg" 
           ["tmp_name"]=> string(27) "C:\Windows\Temp\php18D5.tmp" 
           ["error"]=> int(0) 
           ["size"]=> int(1152125) }

可以看到上面接收到的文件信息,然后根据业务逻辑判断文件是否合法

/**
 * 判断文件类型是否成功
 * @param array $file 文件信息
 * @param array $arr 规定上传图片的各式
 * @param string $path 上传的路径
 * @param string $filetype 上传文件的格式
 * @param int $max 文件的最大值
 * @param string $error 错误信息
 * @return mixed 成功返回文件名,失败返回失败信息
 */

	function upload($file,$filetype,$arr,$path,&$error,$max=2097152)
	{
		switch ($file['error']) {
			case '1':
				$error = '超过了服务器规定的大小';
				return $error;
			case '2':
				$error = '超过了游览器规定的大小';
				return $error;
			case '3':
				$error = '文件丢失';
				return $error;
			case '4':
				$error = '没有选择文件';
				return $error;
			case '6':
			case '7':
				$error = '服务器超时';
				return $error;	
			
		}

		if (!in_array($filetype, $arr)) {
			$error = '图片格式不对,允许上传的各式为:'.explode(',', $arr);
		}
		if ($file['size']>=$max) {
			$error = '超出规定的图片大小,允许最大为:'.floor($max/1048576).'M';
		}
                //获取新的文件名,调用getRand函数
		$filename = getRand($file['name']);
		//拼接文件路径和文件名
		$pathname = $path.'/'.$filename;
		//上传文件
		if (move_uploaded_file($file['tmp_name'],$pathname)) {
				return $filename ;
			}else{
				$error = '未知错误';
				return $error;
			}
        }

    第三步,创建新的文件名

                /**
		 * 拼接一条已时间日期+6位随机数
		 * @param string $file['name'] 上传图片的名字
		 * @return string 返回文件名
		 */
	function getRand($filename){
			$file = date('YmdHis');
			$string = '0123456789';
			for ($i=0; $i < 6; $i++) { 
				$file.= mt_rand(0,strlen($string)-1);
			}
			$file .=strrchr($filename, '.');
			return $file ;
		}

第四部调用函数 upload

   //获取图片信息
    $file=$_FILES['filename'];
    //获取图片的各式
    $filetype=basename($file['type']);
    //设定能上传的图片格式
    $arr = array('jpeg','jpg','gif','png');
    //文件上传的路径
    $path = __DIR__.'/image';

    //调用函数upload并传参数给它
	$res=upload($file,$filetype,$arr,$path,$error);
            //如果上传成功,则输出函数名
		if ($res) {
			echo $res;
		}else{
			echo "上传失败";
		}


你可能感兴趣的:(PHP中上传图片,简单分享)