96)PHP,文件上传(2)

(1)那么既然看到文件即使上传成功,但是只是在脚本周期内有效,脚本只要结束(脚本结束其实很快的),文件就会自动消失,那么怎么才能永久存储文件呢:

 

 函数:

               Move_uploaded_file(上传临时地址,目标地址);

     完成:

             需要使用$_FILES数组,存储了上传的临时文件的信息,包括临时地址!

  为啥说$_FILE中存有文件的路径呢,可以看一下,我们$_FILE输出的信息

              

    每个上传的临时文件,

      有5个信息,

          name:原始文件名,

          type:类型,

          tmp_name,临时地址,

          error:是否有错误及错误类型,

          size:大小。

 

(2)那么怎么判断文件类型:(为啥判断文件类型,因为,假如你要用户传图片,人家偏偏不传图片,传的是音频文件,那么这样不符合要求的,我们就直接给他扼杀在摇篮)

    

1 通常判断类型有两种方式:
21)就是通过文件的后缀名,比如:~~~.mp3     ~~.png等等
32)通过MIME方式,(我也不是很懂)(多用途internet邮件扩展):网络上传输资源时,使用的资源类型表示方法。
4                         Text/html;        image/png

那么截取后缀名方式(必须学会)

11)strrchr(文件名变量,‘.’)    截取文件名中最后出现   .    的后面的字符串
22)strchr(文件名变量,‘.’)截取文件中名中第一次出现   .   的后面的字符串

获得文件路径的函数(详情看手册):

 11)pathinfo()
 2         <?php
 3                     $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
 4 
 5                      echo $path_parts['dirname'], "\n";
 6                     echo $path_parts['basename'], "\n";
 7                     echo $path_parts['extension'], "\n";
 8                     echo $path_parts['filename'], "\n"; // since PHP 5.2.0
 9         ?>
10         
11         结果显示:
12                         以上例程会输出:
13 
14                         /www/htdocs/inc
15                        lib.inc.php
16                        php
17                         lib.inc
18 
19 (2)$_FILE的五个参数同样能得到文件的类型($_FILE['type'])和名字($_FILE['name'])。

 

一段代码:

1 $a='x.y.z.png';
2  echo strrchr($a,'.');
3  echo "<pre>";
4     echo "<pre>";
5     echo "<pre>";
6     echo strchr($a,'.');

结果展示:

      

                              

        

        

        

 

        

        

 

 

(3)怎么在脚本周期内,将那个临时文件保留下来,用  move_uploaded_file(源文件名,新文件地址+名字)

 1 index.php
 2 <?php
 3  
 4  var_dump($_POST);
 5   echo '<pre>';
 6   echo "<pre>";
 7   
 8     
 9   echo '<pre>';
10   echo "<pre>";
11   echo '<pre>';
12   echo "<pre>";
13     
14   var_dump($_FILES);
15   move_uploaded_file($_FILES['picture']['tmp_name'],'./new_name.png');

    

 

     这个是将那个临时文件存在我的当前文件夹下,以new_name.png命名

  开始我的当前文件夹目录情况:
                             然后我执行后             

 

           说明这个函数执行成功了

 

 

  数据库中存的是图片的地址,所以我们可以直接将图片的地址读出来,然后直接赋给img的src就可以了。              

 

posted @ 2017-08-22 20:53  小油菜1  阅读(205)  评论(0编辑  收藏  举报