• 文件上传和多文件上传


    上传文件分析:上传的文件是以二进制的形式上传,因此在上传<form></form>表单里面需要声明 enctype="multipart/form-data"

    上传的文件所有的信息都包含到全局变量$_FILES中

    问题:  (1):上传中文乱码问题:只需使用函数incov("原来的编码utf-8","转化为的编码gbk/gb2312",文件名);

         (2):把文件放到指定目录里:move_uploaded_file(原来的临时路径/$_FILES['file']['tmp_name'],现在的路径);

    代码示例:

    1:上传表单代码:

    1 <form action="10.Pro.php" method="post" enctype="multipart/form-data">
    2 照片:<input type="file" name="file"/><br>
    3 <input type="submit" value="提交">
    4 </form>

    2:php处理代码:

     1 <?php 
     2 
     3 header("Content-Type:text/html;charset=utf-8");
     4 
     5 //为上传的文件创建目录
     6 function mk_dir(){
     7     $filename=iconv("utf-8", "gbk", "./".date("Y年m月d日H时i分",time()));
     8     if (!is_dir($filename)){
     9         mkdir($filename);
    10     }
    11     return $filename;
    12 }
    13 
    14 //产生随机文件名
    15 function new_file(){
    16     $str="abcdefghigklmnopqrstuvwxyz0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";
    17     $str=str_shuffle($str);
    18     return $filename=substr($str, 0,8);
    19 }
    20 
    21 //判断文件是否上传成功
    22 if($_FILES['file']['error']!=0){
    23     die("上传文件失败");
    24 }
    25 
    26 //获取上传文件后缀
    27 function getzhui(){
    28     
    29     $name=explode(".", $_FILES['file']['name']);
    30     return $type=end($name);
    31 }
    32 
    33 //最后生成的文件名机后缀
    34 $filename=mk_dir()."/".new_file().".".getzhui();
    35 
    36 //把文件转移到特定目录
    37 $res=move_uploaded_file($_FILES['file']['tmp_name'],$filename);
    38 
    39 if($res){
    40     echo "上传成功";
    41 }else{
    42     echo "上传失败";
    43 }

    3:多文件上传:如果同时上传多个文件,可以先print_r($_FILES)看下,其结果是一个二维数组,每个子数组存放着一个文件的信息,所以可以通过foreach循环遍历来处理上传的文件

    print_r($_FILES)结果如下:

    php处理代码:

     1 //获取上传文件后缀
     2 function getzhui($v){
     3     $name=explode(".",$v['name']);
     4     return $type=end($name);
     5 }
     6 foreach ($_FILES as $k=>$v){
     7     
     8     //最后生成的文件名机后缀
     9     $filename=mk_dir()."/".new_file().".".getzhui($v);
    10     
    11     //把文件转移到特定目录
    12     $res=move_uploaded_file($v['tmp_name'],$filename);
    13     
    14     if($res){
    15         echo $v['name']."上传成功<br/>";
    16     }else{
    17         echo $v['name']."上传失败<br/>";
    18     } 
    19 }

    提示:如果上传时name属性是同一个数组则代码为:其print_r()结果为一个三维数组

     1 //获取上传文件后缀
     2 function getzhui($v){
     3     $name=explode(".",$v);
     4     return $type=end($name);
     5 }
     6 foreach ($_FILES as $k=>$v){
     7     
     8     for ($i=0;$i<count($v['name']);$i++){
     9         //最后生成的文件名机后缀
    10         $filename=mk_dir()."/".new_file().".".getzhui($v['name'][$i]);
    11         //把文件转移到特定目录
    12         $res=move_uploaded_file($v['tmp_name'][$i],$filename);
    13         
    14         if($res){
    15             echo $v['name'][$i]."上传成功<br/>";
    16         }else{
    17             echo $v['name'][$i]."上传失败<br/>";
    18         }
    19     }
    20 }
  • 相关阅读:
    vue2.0 动画
    I. 对缓存进行处理
    G. 【案例】Ajax实现无刷新分页效果
    H. Ajax对XML信息的接收与处理
    F. 异步同步请求
    D. 接收服务器端返回的信息
    E. 请求GET和POST的不同
    C. 发起对服务器的请求
    B. 创建Ajax对象
    A. AJAX介绍
  • 原文地址:https://www.cnblogs.com/yhqq512/p/6934165.html
Copyright © 2020-2023  润新知