• 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就可以了。              

  • 相关阅读:
    spring boot 在SpringMVC中使用Jackson并格式化时间
    MUI 同一个页面初始化多个pullrefresh 下拉刷新/上拉加载组件的问题
    Fixflow引擎解析(五)(内核)
    Fixflow引擎解析(四)(模型)
    Fixflow引擎解析(三)(模型)
    Fixflow引擎解析(二)(模型)
    Fixflow引擎解析(一)(介绍)
    Raspberry Pi 摄像头模块应用程序文档翻译
    js 继承如何让对象instanceof 当前类及父类均返回true?
    zabbix邮件脚本报警
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/7413610.html
Copyright © 2020-2023  润新知