一:配置 php.ini 文件php
想要顺利的实现上传功能,首要作的就是在 php.ini 中开启文件上传,并对其中的一些参数做出合理的设置。找到 File Upioads 项,能够看到下面有 3 属性,表示含义以下:html
file_uploads:若是值为 on,说明服务器支持上传文件;若是为 off,则表示不支持。数组
upload_tem_dir:上传文件临时目录。在文件被成功上传以前,文件首先存放到服务器端的临时目录,若是想要指定位置,可在这里设置,不然使用系统默认目录就能够了。服务器
upload_max_filesize: 服务器容许上传的文件的最大值,以MB为单位。系统默认是 2MB,用户能够自行设置。函数
除了File Upolads项,还有几个属性也会影响到上传文件的功能。post
max_execution_time:PHP 中一个指令所能执行的最长时间,单位是秒;spa
memory_limit : PHP 中一个指令所分配的没存空间,单位是MB;code
说明:orm
1.若是使用集成的安装包来配置PHP 的开发环境,上述介绍的这些配置信息按默认已经配置好了!htm
2.若是要上传超大的文件,须要对 php.ini 的一些参数进行修改,其中包括 upload_max_filesize服务器容许上传的文件的最大值,max_execution_time 一个指令所能执行的最长时间和memory_limit一个指令所分配的内存空间!
二:预约义变量$_FLIES
$_FLIES 变量储存的事是上传文件的相关信息,这些信息对于上传功能有很大的做用。该变量是一个二维数组。预约义变量$_FILES 元素说明以下表:
下面实例建立一个上传文件域,经过$_FILES变量输出上传的文件资料。具体示例代码以下
<html> <body> <table width="500" border="1" cellpadding="0" cellspacing="0"> <!--上传文件的 form表单,必须有 enctype 属性--> <form method="post" about="" enctype="multipart/form-data"> <tr> <td width="150" height="30" align="right" valign="middle">请选择上传文件:</td> <!--上传文件域,type类型为file--> <td width="250"><input type="file" name="upfile"></td> <!-- 提交按钮--> <td width="100"><input type="submit" name="submit" value="上传"></td> </tr> </form> </table> </body> </html> <?php header("Content-Type:text/html; charset=utf-8"); if(!empty($_FILES)){ //判断变量$_FILES是否为空 foreach ($_FILES['upfile'] as $name => $value){ //使用 foreach 循环输出上传文件信息的名称和值 echo $name,"=".$value."<br>"; } } ?>
输出结果为:
下面的实例建立一个上传表单,容许上传文件大小为 1MB 一下的文件,具体的示例代码以下:
<html> <body> <table width="500" border="1" cellpadding="0" cellspacing="0"> <!--上传文件的 form表单,必须有 enctype 属性--> <form method="post" about="" enctype="multipart/form-data"> <tr> <td width="150" height="30" align="right" valign="middle">请选择上传文件:</td> <!--上传文件域,type类型为file--> <td width="250"><input type="file" name="upfile"></td> <!-- 提交按钮--> <td width="100"><input type="submit" name="submit" value="上传"></td> </tr> </form> </table> </body> </html> <?php header("Content-Type:text/html; charset=utf-8"); if(!empty($_FILES)){ //判断变量$_FILES是否为空 $fileinfo = $_FILES['upfile']; if($fileinfo['size']>0 && $fileinfo['size']<1000000){ move_uploaded_file($fileinfo['tmp_name'], $fileinfo['name']); echo '上传成功'; }else{ echo '文件太大或未知'; } } ?>
说明:
使用 move_uploaded_file()函数上传文件,在建立 form表单时,必须设置 form 表单的 enctype="multipart/form-data“。
下面的实例有 2个文件上传域,文件域的名字为 u_file[],提交后上传的文件信息都会被保存到$_FILES['u_file']中,生成多为数组,读取数组信息,而且上传文件,具体实例代码以下:
<html> <body> <table border="1" cellpadding="0" cellspacing="0"> <!--上传文件的 form表单,必须有 enctype 属性--> <form method="post" about="" enctype="multipart/form-data"> <tr> <td>请选择上传文件:</td> <!--上传文件域,type类型为file--> <td><input type="file" name="u_file[]"></td> <td><input type="file" name="u_file[]"></td> <!-- 提交按钮--> <td><input type="submit" name="submit" value="上传"></td> </tr> </form> </table> </body> </html> <?php header("Content-Type:text/html; charset=utf-8"); if(!empty($_FILES['u_file']['name'])){ $file_name = $_FILES['u_file']['name']; $file_tmp_name = $_FILES['u_file']['tmp_name']; for($i=0;$i<count($file_name);$i++){ if($file_name[$i] != ''){ move_uploaded_file($file_tmp_name[$i], $i.$file_name[$i]); echo '文件'.$file_name[$i].'上传成功<br>'; } } } ?>
输出结果以下:
欢迎QQ交流讨论:965794175