美文网首页
[PHP文件上传下载]③--服务端限制

[PHP文件上传下载]③--服务端限制

作者: 子木同 | 来源:发表于2017-09-18 16:20 被阅读20次
Paste_Image.png
<?php
//getimagesize($filename):得到指定图片的信息,
//如果是图片返回数组 如果不是图片返回FALSE
$filename = 'uploads/yun.jpeg';
var_dump(getimagesize($filename));
/*
 * array
  0 => int 224
  1 => int 224
  2 => int 2
  3 => string 'width="224" height="224"' (length=24)
  'bits' => int 8
  'channels' => int 3
  'mime' => string 'image/jpeg' (length=10)
 */

?>
<html>
<head><title></title></head>
<body>
<form action="doAction.php" method="post" enctype="multipart/form-data">
    请选择您要上传的文件:
    <input type="file" name="myFile">
    <input type="submit" value="上传文件">
</form>
</body>
</html>

doAction.php

<?php
$fileInfo = $_FILES['myFile'];
$maxSize = 2097152;//2M 允许的最大值
$allowExt = array('jpeg', 'jpg', 'png', 'gif', 'wbmp');
$flag = true;//检测是否为真实的图片类型
//1.判断错误号
if ($fileInfo['error'] == 0) {
    //判断上传文件的大小
    if ($fileInfo['size'] > $maxSize) {
        exit("上传文件过大");
    }
    //$ext=strtolower(end(explode('.',$fileInfo['name'])))
    $ext = pathinfo($fileInfo['name'], PATHINFO_EXTENSION);
    if (!in_array($ext, $allowExt)) {
        exit("非法文件类型");
    }
    //判断是否是通过HTTP POST文件上传上来的
    if (!is_uploaded_file($fileInfo['tmp_name'])) {
        exit('文件不是通过HTTP POST 方式上传来的');
    }
    //检测是否为真实的图片类型
    if ($flag) {
        if (!getimagesize($fileInfo['tmp_name'])) {
            exit('不是真正的图片类型');
        }
    }
    $path = 'uploads';
    if (!file_exists($path)) {
        mkdir($path, 0777, true);
        chmod($path, 0777);
    }
    //确保文件名唯一,防止重名产生覆盖
    $uniName = md5(uniqid(microtime(true), true)) . '.' . $ext;
    $destination = $path . '/' . $uniName;//uploads/e8b67f2be200f625ef111b4f3352903b.jpeg
    if (@move_uploaded_file($fileInfo['tmp_name'], $destination)) {
        echo "文件上传成功";
    } else {
        echo "文件上传失败";
    }
} else {
    switch ($fileInfo['error']) {
        case 1:
            echo "上传文件超过了PHP配置文件中upload_max_file";
            break;
        case 2:
            echo "超过了表单MAX_FILE_SIZE";
            break;
        case 3:
            echo "文件部分被上传";
            break;
        case 4:
            echo "没有选择上传文件";
            break;
        case 6:
            echo "没有找到临时目录";
            break;
        case 7:
        case 8:
            echo "系统错误";
            break;
    }
}

?>
Paste_Image.png Paste_Image.png

相关文章

  • [PHP文件上传下载]③--服务端限制

    doAction.php

  • 文件上传下载接口

    文件上传下载接口 文件上传 首先确保你引入了 web starter 配置文件上传大小限制 编写控制层传文件 文件...

  • 07-Ajax

    PHP基础 PHP基础语法大部分和JS差不多 如何运行编写好的PHP文件因为PHP是服务端编程语言,所以要在服务端...

  • hyperf JsonRpc demo

    1 服务端 provider.php composer.json文件 consul.php dependencie...

  • PHP定义

    PHP是啥玩意? PHP文件又是啥玩意? PHP 能做啥? PHP相对其他服务端语言的优势又是啥?

  • 【第43天】python全栈从入门到放弃

    1 客户端输入命令,传输到服务端调用操作系统命令 客户端代码: 服务端代码: 2 模拟ftp文件的上传下载 客户端...

  • 简单的上传附件

    前台:1、ajax 2、formdata 3、修改php.ini post请求文件大小限制和附件文件大小限制(...

  • PHP - 实现类似于百度的实时搜索

    XML文件: PHP服务端: $xmlDoc=new DOMDocument(); //创建了一个 DOMDocu...

  • Blob与File、DataURL、canvas的相互转换

    因为浏览器沙箱的存在,web端操作文件的限制比较多,只能进行一些简单的文件上传下载。对于编辑文件和文件转换感到苍白...

  • Java使用独立文件服务器

    应用程序中免不了要上传下载文件,实现方式由简单到复杂有很多种: 最简单的,文件上传后服务端程序将文件写到服务器上一...

网友评论

      本文标题:[PHP文件上传下载]③--服务端限制

      本文链接:https://www.haomeiwen.com/subject/adrbsxtx.html