美文网首页开源项目
ThinkPHP5.0文件上传校验

ThinkPHP5.0文件上传校验

作者: 铁匠简记 | 来源:发表于2018-05-14 09:43 被阅读4次

控制器app\index\controller\Upload.php

//TP5文件上传校验
namespace app\index\controller;

use think\Image;
use think\Request;

/**
* 上传类
*/
class Upload extends Controller
{
    //单文件上传
    public function index1()
    {
        return $this->fetch();
    }
    //多文件上传
    public function index2()
    {
        return $this->fetch();
    }
    //单文件上传提交
    public function up1(Request $request)
    {
        /*
        *第一步校验
         */
        //获取表单上传文件
        $file = $request->file('file1');//file1:表单name值
        //上传验证
        $result = $this->validate(['file1'=>$file],['file1'=>'require|image:100,100,png'],['file1.require'=>'请上传格式为100*100的PNG格式文件'],['file1.image'=>'非法图像文件']);//可以不验证图片大小和扩展名,也可以用官网提供的方式验证
        if (true !== $result) 
        {
            $this->error($result);
        }

        /*
        *第二步上传,也可以参考官网rule规则,
        *这里演示扩展
         */
        $info = $file->rule(function ($file) {
            return $file->getInfo('type').date('Y-m-d_H-i-s');//文件名,根据项目需要自定义
        })->move(ROOT_PATH . 'public' . 'uploads');

    }

    //多文件上传提交
    public function up2(Request $request)
    {
        $files = $request->file('file2');
        foreach($files as $file){
            #code....;
        }
    }
    //echo $info->getRealPath(); 
    //echo $info->getExtension();//输出png
    //echo $info->getSaveName(); //输出2017/01/05/5.png
    //echo $info->getFileName(); //输出5.png
    //echo $file->getError();    // 上传失败获取错误信息
}

模板文件app\index\view\upload\up1

<!DOCTYPE html>
<html>
<head>
    <title>单文件上传</title>
</head>
<body>
    <form action="{:url('up1')}" enctype="multipart/form-data" method="post">
        <input type="file" name="file1" /> <br> 
        <input type="submit" value="上传" /> 
    </form>
</body>
</html>

模板文件app\index\view\upload\up2

<!DOCTYPE html>
<html>
<head>
    <title>多文件上传</title>
</head>
<body>
    <form action="{:url('up2')}" enctype="multipart/form-data" method="post">
        <input type="file" name="file2[]" /> <br> 
        <input type="file" name="file2[]" /> <br> 
        <input type="file" name="file2[]" /> <br> 
        <input type="submit" value="上传" /> 
    </form>
</body>
</html>

相关文章

  • ThinkPHP5.0文件上传校验

    控制器app\index\controller\Upload.php 模板文件app\index\view\upl...

  • 文件上传之绕过

    文件上传校验方式 客户端JavaScript校验服务端校验①请求头中content-type字段校验②文件内容头校...

  • 前端——利用File signature精准校验文件类型

    背景:在进行文件上传时,往往需要对上传文件的类型进行限制。最简单也是最常用的文件类型校验方法,是直接校验文件的拓展...

  • 我的简书目录

    spring spring 参数校验 spring 上传文件和下载文件 spring-boot-devtools ...

  • beego项目实战——文件上传

    上一篇完成了用户的登录注册和登录态校验,这次开始做数据上传的部分,先做文件上传文件上传主要包括文件的上传存储,数据...

  • CTF之文件操作漏洞

    一、文件上传漏洞 1、文件上传检测:(1)js检测(前端校验):查看源码!禁用js或burp抓包修改(2)mime...

  • web安全

    【原创】本文主要简述前端web安全知识 文件上传 后端服务器未对文件进行校验和过滤,上传asp/aspx/jsp/...

  • 文件上传漏洞的总结

    防御文件上传的一些思路 客户端javascript校验(通常校验扩展名) 检查文件扩展名 检查MIME类型 随机文...

  • Vue上传文件到OSS并校验文件的md5值

    Vue上传文件到OSS并校验文件的md5值 最近在做的项目中需要在Vue中上传文件到阿里云OSS,还需要在上传之前...

  • js跟java计算mad5不一致

    今天碰到一个比较棘手的问题,经理要求上传文件同时上传文件的信息,信息包含文件的md5,后台会做文件完整性校验等,我...

网友评论

    本文标题:ThinkPHP5.0文件上传校验

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