• 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'], "
    ";
     6                     echo $path_parts['basename'], "
    ";
     7                     echo $path_parts['extension'], "
    ";
     8                     echo $path_parts['filename'], "
    "; // 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就可以了。              

  • 相关阅读:
    突然想谈谈——我的软件测试入门
    js+rem动态计算font-size的大小,适配各种手机设备!
    iOS 如何打测试包,直接给测试人员使用(绝对的新手入门)
    去掉无用的多余的空格(string1.前后空格,2.中间空格)
    iOS 自定义键盘ToolBar(与键盘的弹出、收起保持一致)
    iOS上线...踩坑
    iOS10 导航条,这个二狗子变了...踩坑
    ios程序发布测试打包
    获取毫秒级时间戳
    弹簧动画效果(系统自带方法)
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/7413610.html
Copyright © 2020-2023  润新知