zoukankan      html  css  js  c++  java
  • 文件上传和多文件上传

    上传文件分析:上传的文件是以二进制的形式上传,因此在上传<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 }
  • 相关阅读:
    PDF文件中的Form保存问题
    Understanding IP Fragmentation
    tcp ip guide IPsec IKE
    Windows安全事件日志中的事件编号与描述
    Cisco PIX fix up and Juniper firewall FTP ALG
    很好的IPSec介绍,详细解释了IKE协商的2个阶段的作用
    virtualbox 下运行Ubuntu 8.10的分辨率和guest additions的问题。
    Fixing the ‘Do you want to display nonsecure items’ message
    windows xp 开始菜单里面所有项目右键不起作用。
    HP backup and recovery manager
  • 原文地址:https://www.cnblogs.com/yhqq512/p/6934165.html
Copyright © 2011-2022 走看看