| 
       本文章是一篇适合于php入门者的文章告诉大如何编辑php文件上传代码,在编辑前我们需要了解几点,有及FILES全局变量的理解了,有需要学习php文件上传的朋友可参考本文章. 
php文件上传代码编写过程 
1. 先判断是否上传文件 
2. 如果有再来判断上传中是否出错 
3. 如果出错,则提示出错信息 
4. 如查没出错,再判断文件类型 
5. 如果类型符合条件,再判断指定目录中有没有存在该文件 
6. 如果没有就把该文件移至指定目录 
在php中上传文件必须知道的几个东西 
$_FILES['myfile']['name']  是指被上传文件的名称 
$_FILES['myfile']['type']  是指被上传文件的类型 
$_FILES['myfile']['size']  是指被上传文件的大小,单位为字节(B) 
$_FILES['myfile']['tmp_name']  是指被上传文件存在服务器中的临时副本文件名称,文件被移动到指定目录后临文件将被自动消毁. 
$_FILES['myfile']["error"]  是指由文件上传中有可能出现的错误的状态码,关于各状态含义后在会说明. 
先来看一下HTML部分. 
实例代码如下: 
	
	- ?<form action="upload.php" method="post" enctype="multipart/form-data">  
 
	- 上传:<input type="file" name="myfile" />  
 
	- <input type="submit" name="submit" value="上传" />  
 
	- </form> 
 
	 
 
说明: 
form标答的action="upload.php"是指点击这个form中的submit的时候,这个上传命令会被发送到这个叫 upload.php的页面去处理.method="post"是指以post方式去送,enctype="multipart/form-data"属性规定了在提交这个表单时要使用哪种内容类型,在表单需要二进制数据时,比如文件内容,请使用"multipart/form-data",如果要上传文件,这个属性是必要的.input中的type="file"时,规定了应该把输入作为文件来处理,并且在input后面会有一个浏览的按钮.我们再来看一个PHP处理页面 upload.php 
实例代码如下: 
	
	- <?php  
 
	- if($_FILES['myfile']['name'] != '') {  
 
	-   if($_FILES['myfile']['error'] > 0) {  
 
	-     echo "错误状态:" . $_FILES['myfile']['error'];  
 
	-   } else {  
 
	-     move_uploaded_file($_FILES['myfile']['tmp_name'] , "uploads/" . $FILES['myfile']['name']);  
 
	-     echo "<script>alert(上传成功!);</script>";  
 
	-   }  
 
	- } else{  
 
	-   echo "<script>alert(请上传文件!);</script>";  
 
	- }  
 
	- ?> 
 
	 
 
上面超级简单,我们现在来升级一下 
1、upload.php 
实例代码如下: 
	
	- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
 
	- <html> 
 
	-   <head> 
 
	-     <title>ddd</title> 
 
	-     <meta http-equiv="content-type" content="text/html; charset=UTF-8">     
 
	-   </head>      
 
	-   <body> 
 
	-         <!--文件上传要注意:1、要有enctyp,2、method="post"--> 
 
	-     <form enctype="multipart/form-data" action="uploadProcess.php" method="post" > 
 
	-         <table> 
 
	-             <tr><td>请填写用户名</td><td><input type="text" name="username"></td></tr> 
 
	-             <tr><td>请简单介绍文件</td><td><textarea rows="7" cols="50" name="fileintro" style="width:300px;"></textarea></td></tr> 
 
	-             <tr><td>请上传你的文件</td><td><input type="file" name="myfile"></td></tr> 
 
	-             <tr><td colspan="2"><input type="submit" value="上传"><td></tr> 
 
	-         </table> 
 
	-     </form> 
 
	-   </body> 
 
	- </html> 
 
	 
 
2、uploadProcess.php 
实例代码如下: 
	
	- <?php 
 
	-      
 
	-     $username=$_POST['username']; 
 
	-     $fileintro=$_POST['fileintro']; 
 
	-      
 
	-      
 
	-      
 
	-  
 
	-  
 
	-  
 
	-      
 
	-      
 
	-     $file_size=$_FILES['myfile']['size']; 
 
	-     if($file_size>2*1024*1024){ 
 
	-         echo "<script type='text/javascript'>window.alert('文件不能大于2M')</script>"; 
 
	-         exit(); 
 
	-     } 
 
	-      
 
	-     $file_type=$_FILES['myfile']['type']; 
 
	-     if($file_type!="image/jpeg" && $file_type!="image/pjpeg"){ 
 
	-         echo "文件类型只能是 jpg 格式"; 
 
	-         exit(); 
 
	-     } 
 
	-     
 
	-      
 
	-     if(is_uploaded_file($_FILES['myfile']['tmp_name'])){ 
 
	-          
 
	-         $upload_file=$_FILES['myfile']['tmp_name']; 
 
	-          
 
	-          
 
	-         $user_path=$_SERVER['DOCUMENT_ROOT']."/file/up/".$username; 
 
	-         if(!file_exists($user_path)){ 
 
	-             mkdir ($user_path); 
 
	-         } 
 
	-          
 
	-          
 
	-         $file_true_name=$_FILES['myfile']['name']; 
 
	-         $move_to_file=$user_path."/".time().rand(1,1000).substr($file_true_name,strripos($file_true_name,".")); 
 
	-          
 
	-          
 
	-         if(move_uploaded_file($upload_file,iconv("utf-8","gb2312","$move_to_file"))){ 
 
	-             echo $_FILES['myfile']['name']."上传成功"; 
 
	-         }else{ 
 
	-             echo "上传失败"; 
 
	-         } 
 
	-     }else{ 
 
	-         echo "上传失败"; 
 
	-     } 
 
	- ?> 
 
	 
 
注意: 
我举个例子大家就知道,比如一个图片文件 pic.jpg,我们用 strrchr处理,strrchr(pic.jpg,'.'),它将返回.jpg,明白了吗?该函数返回指定字符在该字符串最后出现的位置后的字符.配合 substr() 我们就可以取到jpg,这样我们就得到了文件的后缀名,来判断上传文件是否符合指定格式.本程序把指定的格式放在一个数组中,实际使用时可根据需要添加. 
接下来看产生随机数文件名部分, 我们看到mt_srand()这个函数,手册上叫他“播下一个更好的随机数发生器种子”,其实就是初始化一个随机数的函数,参数是(double)microtime() * 1000000,这里如果不这是参数就会自动设置个随机数,当然这不符合我们的需要,如此一来,随机数就具备一定的长度,保证了上传文件不重名 
      
      (责任编辑:admin) |