php文件上传

一、php文件上传需要确认的配置选项

    在php.ini文件中看下 --->  file_uploads = On           upload功能是否打开

               --->  upload_tmp_dir = "c:/wamp/tmp"      设置上传缓存的文件夹

               --->  post_max_size = 8M              默认post提交文件大小的最大值

               --->  upload_max_filesize = 2M       默认上传文件的最大大小

    要先确认post可以提交的最大值 大于 默认上传文件大小的最大值

 

二、写上传表单需要注意的事项

    1.表单的method必须是 HTTP post

    2.表单中的上传路径选项要使用 type="file"

    3.在表单的 form 中要使用 encype="multipart/from-data"  用来指定上传数据的编码方式

    4.可以在表单上设置上传文件的最大大小  <input type="hidden" name="MAX_FILE_SIZE" value="100000"> 是个友好的提示(建议使用)

 

三、php脚本处理接收到的文件

    $_POST  只可以接收文本类的数据

    $_FILES  专门来接收 type="file" 的文件

 

    在对上传到服务器缓存中的文件应该做些检查处理,避免发生意外

      1.检查上传文件的错误代码(有可能发生错误)

 1   if ( $_FILES[‘file_name‘][‘error‘] > 0 ){
 2 
 3           switch ( $_FILES[‘file_name‘][‘error‘] ){
 4 
 5             case 1:
 6 
 7               echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
 8 
 9             break;
10 
11             case 2:
12 
13               echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
14 
15             break;
16 
17             case 3:
18 
19               echo "文件只有部分被上传";
20 
21             break;
22 
23             case 4:
24 
25               echo "没有文件被上传";
26 
27             break;
28 
29             
30 
31             default:
32 
33               echo "未知错误";
34 
35           }
36 
37           exit;     //若 》0 则跳出 if
38 
39         }else{
40 
41         echo "文件正常";
42 
43         }

 

      2.检查上传文件的大小并做出处理

 1 $max_size = 100000;   //100K
 2 
 3         if ( $_FILES[‘file_name‘][‘size‘]  >  $max_size ){
 4 
 5           echo "文件大小大于设定的大小";
 6 
 7         }else{
 8 
 9           echo "文件大小正常";
10 
11         }

 

        

      3.检查文件类型

        

 1 $allowtype = array( ‘gif‘ , ‘png‘ , ‘jpg‘ , ‘jpeg‘ );      //设置内容支持的文件的后缀名
 2 
 3         $arr = explode( ‘.‘ , $_FILES[‘file_name‘][‘name‘] );
 4 
 5         $hz = $arr[count($arr) -1];     //防止文件名中有 .
 6 
 7         if ( !in_array( $hz ,  $allowtype) ) {
 8 
 9           echo "这是不允许的类型";
10 
11           exit;
12 
13         }

 

      4.把文件改名后转移到指定文件夹

        

 1 $filepath = ‘uploads/‘ ;
 2 
 3         $rename = date(‘Y‘).date(‘n‘).date(‘d‘).date(‘H‘).date(‘i‘).date(‘s‘).rand(100,999).‘.‘.$hz;        //改个新名
 4 
 5         if ( is_uploaded_file($_FILES[‘file_name‘][‘tmp_name‘])){
 6 
 7           if ( move_uploaded_file( $_FILES[‘file_name‘][‘tmp_name‘] , $filepath, $rename)){
 8 
 9             echo "上传成功!";
10 
11           }else{
12 
13                echo "上传失败!";
14 
15              }           
16 
17         }else{
18 
19           echo "不是一个上传的文件";
20 
21         }

 

 

总结一下就是:

在使用php上传功能时,需要检查php.ini中的配置项,避免出现大小不符的问题。

在服务器接收到文件后,应当对文件进行错误,类型等的检查,然后在脚本结束前把文件转移到其他文件夹中。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。