php从入门到精通 php从入门到精通PHP是什么php环境搭建php echo/print 打印输出PHP date()函数:日期和时间PHP语法PHP 变量PHP 常用数据类型PHP常量PHP运算符PHP if语句PHP Switch语句PHP for和foreach 循环PHP while 循环PHP退出循环PHP 函数PHP 类与对象PHP命名空间PHP超全局变量PHP 表单 PHP表单提交PHP 表单验证PHP 日常操作 PHP多维数组PHP Include和require用法PHP 打开/读取/输出/关闭文件PHP 创建/写入文件PHP 上传文件PHP 复制/移动/删除文件PHP判断目录文件是否存在PHP获取文件属性和权限PHP cookiePHP Sessionphp socketPHP Mysql数据库 创建/选择/删除Mysql数据库创建/删除Mysql数据表修改/重命名Mysql数据表Mysql数据管理PHP 连接MySQL数据库PHP 创建MySQL数据库PHP创建Mysql数据表PHP插入Mysql数据PHP查询Mysql数据PHP MySQL Order By排序PHP MySQL UPDATE更新数据PHP MySQL Delete删除数据

PHP 上传文件

通过 PHP把文件上传到服务器。

index.php文件

<!DOCTYPE >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>上传文件-炫代码</title>
</head>
<body>

<form action="" method="post" enctype="multipart/form-data">
	<input type="file" name="myfile" size="20" />
	<input class="two" type="submit" name="sub" value="上传" />
</form>

<?php
    //点击按钮时
    if(isset($_POST['sub'])){
			if($_FILES['myfile']['error']>0){		//判断文件是否可以上传到服务器
				echo "上传错误:";
				switch($_FILES['myfile']['error']){
					case 1:
						echo "上传文件大小超出配置文件规定值";
					break;
					case 2:
						echo "上传文件大小超出表单中约定值";
					break;
					case 3:
						echo "上传文件不全";
					break;
					case 4:
						echo "没有上传文件";
					break;	
				}
			}else{
				$type=$_FILES['myfile']['name'];
                $types=strstr($type,'.');//截取字符串
                if($types==".txt"){
                //1024字节等于1KB 1024KB等于1MB 1024MB等于1GB
					if($_FILES["myfile"]['size'] > 0 && $_FILES["myfile"]['size'] < 1024 * 2000){//自定义限制大小
						$dir = 'myfiles/'; //上传目录
						$name = $_FILES["myfile"]['name'];
						$rand = rand(0,10000);//随机生成数
						$name = $rand.@date('YmdHis').$name;//重新命名防止文件名重复
						$path = 'myfiles/'.$name;
						if(!is_dir($dir)){//如果目录不存在
							mkdir($dir);//新建目录
						}
						$move = move_uploaded_file($_FILES["myfile"]['tmp_name'],$path);
						if($move == true){
							echo "<script>alert('上传文件成功');</script>";
							echo "上传文件明: " . $_FILES["myfile"]["name"] . "<br />";
						    echo "上传类型: " . $_FILES["myfile"]["type"] . "<br />";
						    echo "文件大小: " . ($_FILES["myfile"]["size"]) . " b(字节)<br />";
						    echo "副本的名称: " . $_FILES["myfile"]["tmp_name"];
						}
					}else{
						echo "<script>alert('上传文件过大');</script>";	
					}
				}else{
			      echo "上传文件".$_FILES['myfile']['name']."类型不正确!";
	            }
			}
	}
?>
</body>
</html>

<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

$_FILES第二参数
参数名
描述
$_FILES['myFile']['name'] 客户端文件的原名称
$_FILES['myFile']['type']文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size']已上传文件的大小,单位为字节。 
$_FILES['myFile']['tmp_name']文件被上传后在服务端储存的临时文件名。
$_FILES['myFile']['error']和该文件上传相关的错误代码。此项目是在 PHP 4.2.0 版本中增加的。

$_FILES['myFile']的"myFile"是from表单的file元素的name属性名称。

$_FILES['myFile']['error']错误信息说明:

其值为 0,没有错误发生,文件上传成功。

其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。

其值为 3,文件只有部分被上传。

其值为 4,没有文件被上传。

其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。

其值为 7,文件写入失败。PHP 5.1.0 引进。


文件被上传后,默认地会被储存到服务端的默认临时目录中,除非 php.ini 中的 upload_tmp_dir 设置为其它的路径。服务端的默认临时目录可以通过更改 PHP 运行环境的环境变量 TMPDIR 来重新设置,但是在 PHP 脚本内部通过运行 putenv() 函数来设置是不起作用的。该环境变量也可以用来确认其它的操作也是在上传的文件上进行的。所以用move_uploaded_file()函数将它复制到其它位置,此时,才算完成了上传文件过程。

move_uploaded_file()函数

move_uploaded_file()函数将文件上传到服务器中指定的位置。如果成功返回TRUE,否则返回FALSE。

语法:

bool move_uploaded_file ( string $filename , string $destination )

move_uploaded_file("临时文件名","新路径和名称")

 php配置文件php.ini上传文件相关设置

参数名
默认值描述
file_uploadson是否允许HTTP文件上载,如果值是off,为否,如果是on,则为是
max_execution_time30
每个脚本的最大执行时间(以秒为单位),如果上传时间大于最大执行时间则无法上传。
memory_limit128 M脚本可能消耗的最大内存量。单位为MB,其大小会影响文件上传。
upload_tmp_dirNULL
HTTP上传文件的临时目录,多数使用系统的默认目录,也可以自行设置。
upload_max_filesize2M
上传文件的最大允许文件的大小,以MB为单位。如果要上传大于文件最大值,就要修改这个值。
max_file_uploads20
可以通过单个请求上载的最大文件数