• 文件域处理


    一、上传文件和获取

    ①type属性为file的input元素可以通过表单提交文件(上传文件)

    • 表单form的method属性值必须设为post
    • 表单form的enctype属性值默认为urlencoded,格式是key1=value1&key2=value2
    • 表单form的enctype属性值也必须设为multipart/form-data

    ②服务端PHP可以通过$_FILES获取上传的文件信息

    <?php
        if($_SERVER['REQUEST_METHOD']==='POST'){
            echo '<pre>';
            var_dump($_FILES);
            /*
            array(1) {
                ["img"]=>array(5) {
                  ["name"]=>string(26) "QQ截图20180615150657.png"
                  ["type"]=>string(9) "image/png"
                  ["tmp_name"]=>string(27) "C:WindowsTempphp5B71.tmp"
                  ["error"]=>int(0)
                  ["size"]=>int(10812)
                }
              }
            */
        }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>案例</title>
    </head>
    <body>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
            <input type="file" name="img">
            <button>提交</button>
        </form>
    </body>
    </html>

    二、服务端处理

    <?php
        function upload(){
            if(!isset($_FILES['img'])){
                //客户端提交的表单内容中没有文本域
                $GLOBALS['message']="请上传文件";
                return;
            }
            $img=$_FILES['img'];
             /*举例:如果提交成功服务端接收的是类似下面的一个关联数组
            array(1) {
                ["img"]=>array(5) {
                  ["name"]=>string(26) "QQ截图20180615150657.png"
                  ["type"]=>string(9) "image/png"
                  ["tmp_name"]=>string(27) "C:WindowsTempphp5B71.tmp"
                  ["error"]=>int(0)
                  ["size"]=>int(10812)
                }
              }
            */
            if($img['error']!==UPLOAD_ERR_OK){
                //服务端没有接收到上传的文件
                $GLOBALS['message']="上传失败";
                return;
            }
            //接收了文件,将文件从临时目录tmp_name移动到网站范围之内
            $source=$img['tmp_name'];//源文件位置:C:WindowsTempphp5B71.tmp
            $target='./test/'.$img['name'];//目标位置:移动到文件夹test
            $moved=move_uploaded_file($source,$target);
            if(!$moved){
                $GLOBALS['message']='上传失败';
                return;
            }
            //移动成功(上传了)
            $GLOBALS['message']= '上传成功';
        }
        if($_SERVER['REQUEST_METHOD']==='POST'){
            upload();
        }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>案例</title>
    </head>
    <body>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
            <input type="file" name="img">
            <button>提交</button>
            <p><?php echo isset($GLOBALS['message'])?$GLOBALS['message']:'';?></p>
        </form>
    </body>
    </html>

    三、解决文件上传大小的限制问题

    • 修改php.ini中的post_max_size配置,让服务端可以接受更大的请求体体积

    • 修改php.ini中的upload_max_filesize配置,让服务端可以支持更大的单个上传文件

  • 相关阅读:
    [windows菜鸟]C#中调用Windows API参考工具
    [windows菜鸟]C#中调用Windows API的技术要点说明
    [windows菜鸟]Windows API函数大全(完整)
    C#卸载加载到进程里的dll
    C# 防火墙操作之开启与关闭
    CMD命令行管道命令
    linux kernel elv_queue_empty野指针访问内核故障定位与解决
    U-Boot Driver Model领域模型设计
    linux I/O stack cache 强制刷新
    基于lcov实现的增量代码UT覆盖率检查
  • 原文地址:https://www.cnblogs.com/EricZLin/p/9187929.html
Copyright © 2020-2023  润新知