zoukankan      html  css  js  c++  java
  • PHP--规范化的文件上传

    <form action="" method="post" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="300000"><!--表单隐藏域:MAX_FILE_SIZE。意思是接收文件的最大尺寸-->
        <input type="file" name="up_picture">
        <input type="submit" name="submit" value="提交">
    </form>
    <?

    php if (!empty($_FILES['up_picture'])) {//推断上传内容是否为空 if ($_FILES['up_picture']['error'] > 0) {//推断上传错误信息 echo "上传错误:"; switch ($_FILES['up_picture']['error']) { case 1: echo "上传文件大小超出配置文件规定值"; break; case 2: echo "上传文件大小超出表单中的约定值"; break; case 3: echo "上传文件不全"; break; case 4: echo "没有上传文件"; break; } } else { list($maintype, $subtype) = explode("/", $_FILES['up_picture']['type']); if ($maintype != "image" || $subtype != "png") { echo "上传文件格式不对"; } else { if (!is_dir("./upfile")) {//推断指定文件夹是否存在 mkdir("./upfile");//创建文件夹 } $path = './upfile/' . time() . strtolower(strstr($_FILES['up_picture']['name'], "."));//定义上传文件名称和存储位置 if (is_uploaded_file($_FILES['up_picture']['tmp_name'])) {//推断文件上传是否为HTTP POST上传 if (!move_uploaded_file($_FILES['up_picture']['tmp_name'],$path)) {//运行上传操作 echo "上传失败"; } else { echo "文件:" . time() . strtolower(strstr($_FILES['up_picture']['name'], ".")) . "上传成功,大小为:" . $_FILES['up_picture']['size'] . "字节"; } } else { echo "上传文件:".$_FILES['up_picture']['name']."不合法"; } } } }

    注:
    $_FILES变量存储的是上传文件的相关信息,这些信息对于上传功能有非常大的作用。

    该变量是一个二维数组。


    保存的信息例如以下表

    元素名称 说明
    $_FILES[filename][name] 存储了上传文件的文件名称,如test.txt,tu.jpg
    $_FILES[filename][size] 存储了文件大小。单位为字节
    $_FILES[filename][tmp_name] 文件上传时,首先在暂时文件夹中被保存成一个暂时文件。该变量为暂时文件名称。

    $_FILES[filenam][type] 上传文件的类型。
    $_FILES[filename][error] 存储了上传文件的结果。

    假设返回0,则说明文件上传成功。


    UPLOAD_ERR_OK 值:0; 没有发生错误,文件上传成功
    UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值
    UPLOAD_ERR_FORM_SIZE 值:2;上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
    UPLOAD_ERR_PARTIAL 值:3; 文件仅仅有部分被上传
    UPLOAD_ERR_NO_FILE 值:4;没有文件被上传, 值:5; 上传文件大小为0

    如需了解具体的文件上传方法请浏览http://blog.csdn.net/qq_28602957/article/details/51106366

  • 相关阅读:
    Java ES api 查询例子
    leveldb学习
    Viewstamp Replication协议
    PacificA协议
    vhost架构
    数据分片方法
    常见分布式存储系统架构分析
    数据存储(B+树 vs LSM树)
    paxos算法理解
    Raft协议理解
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8465669.html
Copyright © 2011-2022 走看看