zoukankan      html  css  js  c++  java
  • 文件下载与上传

    任何数据类型变量所存储的数据,都是在程序运行时才加载到内存中,而不能持久保存,那么如果需要将数据长久的保存起来,主要有两种办法,保存到普通文件中或者保存到数据库中。我们的PHP可以在我们的服务器上生成目录,创建、编辑、删除、修改文件属性等操作!

    文件的上传
    文件的上传的过程这些细节我们是不需要管的,都是自动的,上传的文件默认是放在一个临时的目录里面的,我们要做的就是把这些临时目录
    里面的文件移动到我们需要的地方就OK啦!

     

    五、文件的上传
            1.html标签需要做的上传设置
               1) form标签属性设置 
                    1>method设置为post
                    2>enctype设置为multipart/form-data
                    3>form表单中设置隐藏类型的input,其中name值设置为MAX_FILE_SIZE,VALUE值设置为需要限制的上传文件的大小(单位为字节)
            2.在服务器端通过PHP处理上传文件,涉及到下面的几条信息
               1)与上传有关的 php配置选项(php.ini)
                    配置项                               可能值                功能描述
                    file_uploads                       ON                        确定服务器上的PHP脚本是否可以接受HTTP文件上传
                    memory_limit                   8M                        设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存
                    upload_max_filesize        2M                        限制PHP处理上传文件的最大值,此值必须小于post_max_size值
                    post_max_size                  8M                        限制通过POST方法可以接受的信息最大量
                    upload_tmp_dir               F:/wamp/tmp      上传文件存放的临时路径,可以是一个绝对路径。这个目录对于拥有此服务器进程用户必须是可写的。
               2)$_FILES多维数组:用于存储各种与上传有关的信息
                    $_FILES['file']['name']             客户端机器文件的原名称,包含扩展名
                    $_FILES['file']['size']                已上传文件的大小,单位为字节
                    $_FILES['file']['tmp_name']    文件上传之后,在服务器端存储的临时文件名
                    $_FILES['file']['error']              文件上传时产生的错误
                                                                       0:表示没有发生任何错误,文件上传成功
                                                                       1:表示上传文件的大小超出了再PHP配置文件中upload_max_filesize选项限制的值
                                                                       2:表示上传文件大小超出了HTML表单中MAX_FILE_SIZE选项所指定的值   
                                                                       3:表示文件只被部分上传
                                                                       4:表示没有上传任何文件
                    $_FILES['file']['type']              获取客户端上传文件的MIME类型,MIME类型规定了各种文件格式的类型。每种MIME类型都是由/分隔的主类型和子类型组成
               3)PHP的文件上传处理函数:用于上传文件的后续处理
                    1>is_uploaded_file()判断指定的文件是否通过HTTP POST上传的
                    2>move_uploaded_file()文件上传后,首先会存储于服务器的临时目录中,可以使用该函数将上传的文件移动到新位置

     

        <?php
    
    // isset($_POST['submit']) 检查submit这个变量是否设置,没设置说明我们没有点击开始上传,
    //上面这步骤没有写,会报错 没有myname这个变量,因为我们还没有提交,后期你可以在提交按钮绑定事件
    if(isset($_POST['submit'])){
        var_dump($_FILES);
        // 给个文件名.后缀,pathinfo会返回 这个下文件的属性信息等
            $file_arr=pathinfo($_FILES['myname']['name']);
            var_dump($file_arr);
            //单独写下面这句也可以实现 文件上传,但是会保存 ,一开始$_FILES 没有信息的
    
            // 移动上传文件,第一个参数是为 上传时候的临时路径在$FILES 数组中,
             //第二个参数为目标路径,你需要给移动的文件取个名字和扩展
            $fname=date('Ymd').rand(1000,9999);   //文件名为当前日期+上随机数
            if(move_uploaded_file($_FILES['myname']['tmp_name'],"upload/{$fname}.{$file_arr['extension']}")){
                echo '上传成功';
            }else{
                echo '失败了';
            };
        
    }
    
    
       ?>

    <?php
    
    //文件下载基于扩展php_fileinfo ,如果没有开启会提示“请先开启php扩展”
    if(!function_exists('finfo_open')){
        header('Content-type:text/html;charset=utf-8');
        exit('请先开启PHP扩展:fileinfo!');
    }
    
    $file="a.rar";
    // 开启扩展之后,创建一个资源,可以使用finfo_open()函数  设置文件的类型为MIME的
    $fileInfo=finfo_open(FILEINFO_MIME_TYPE);
    $mimetype=finfo_file($fileInfo,$file);
    finfo_close($fileinfo);//关闭资源
    
    //发送指定的文件MIME类型的头信息
    header('Content-type:'.$mimeType);
    //指定下载文件的描述
    header('Content-Disposition:attachment;filename='.basename($file));
    //指定文件的大小
    header('Content-Length:'.filesize($file));
    //读取文件内容至输出缓冲区,返回这个文件
    readfile($file);
    ?>

     

  • 相关阅读:
    微信公众号内调用微信支付
    transform-translate3d
    Ubuntu16.04 install apache-flume-1.7.0-bin.tar.gz
    Ubuntu16.04 install apache-hive-2.X.X-bin.tar.gz
    Ubuntu16.04 install mysql5.X
    Ubuntu16.04 install hadoop-2.8.1.tar.gz伪分布式配置
    Ubuntu16.04 install jdk-8u144-linux-x64.tar.gz
    入门VMware Workstation下的Debian学习之Vim简单使用(三)
    入门VMware Workstation下的Debian学习之基本命令(二)
    Ubuntu16.04 install android-studio-ide-162.4069837-linux
  • 原文地址:https://www.cnblogs.com/xiaowie/p/11876211.html
Copyright © 2011-2022 走看看