首页 > 编程语言 >layui 上传和PHP

layui 上传和PHP

时间:2022-11-17 14:45:04浏览次数:57  
标签:function code name layui file new PHP 上传

php + layui 文件上传 以及 拖拽上传

 
HTML:
  
                <div id="box">
                    <div id="drop_area">将文件拖拽到此区域</div>
                    <div id="area_img"> <img src="../images/tzsc.png" id="img_upfiles"  style="cursor: pointer"/> </div>
                </div>
复制代码
    <div class="layui-form-item">
        <div class="layui-input-block">
            <div class="layui-upload" style="margin-left: 730px">
                <button type="button" class="layui-btn layui-btn-normal" id="upfiles">&emsp;<i class="layui-icon"></i> 文件上传&emsp;</button>
                <span style="color: #666"></span>
            </div>
            <table id="tabl1" class="layui-table" style="width: 850px;margin-top: -38px;margin-left: -110px;">
                <colgroup>
                    <col width="300"><col width="80"><col width="160"><col width="300">
                </colgroup>
                <thead>
                <tr>
                    <th>文件名称</th><th>类型</th><th>操作</th><th>备注</th>
                </tr>
                </thead>
                <tbody id="fileList"></tbody>
            </table>
        </div>
    </div>
复制代码

 

JS:

XMLhttpReuest.js
复制代码
function ajaxFunction()
{
    var xmlHttp;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                alert("您的浏览器不支持AJAX!");
                return false;
            }
        }
    }
    return xmlHttp;
}
复制代码 复制代码
{?*拖拽上传*?}
<script>
    window.onload = function () {
        var box = document.getElementById('box');
        box.ondragenter = function (e) {
            e.preventDefault();
        }
        box.ondragover = function (e) {
            e.preventDefault();
        }
        box.ondragleave = function (e) {
            e.preventDefault();
        }
        box.ondrop = function (e) {
            e.preventDefault();
            var file = e.dataTransfer.files[0];
            var formData = new FormData();
            formData.append('file', file);

            var xml = ajaxFunction();
            xml.open("post", './ajax.files.upload.php?MID={?$lev.MID?}&upfilecode={?$upfilecode?}&path=djyp_file', true);
            xml.send(formData);
            xml.onreadystatechange = function () {
                console.log(xml.readyState);
                console.log(xml.status);
                if(xml.readyState == 4 && xml.status==200){
                    var res=JSON.parse(xml.responseText);
                    if(res.code > 0){
                        layer.msg(res.msg);
                    }else {
                        var tr = $(['<tr>'
                            , ' <td><input type="text" autocomplete="off" placeholder="请输入文件名称" value="' + res.old_name + '" name="old_name[' + res.id + ']"></td>'
                            , '<td>' + res.file_ext + '</td>'
                            , '<td>'
                            , '<a class="layui-btn layui-btn-warm layui-btn-xs fileread" href="' + res.path + res.new_name +'.'+ res.file_ext + '" target="_blank"> <i class="layui-icon layui-icon-read"></i>查看 </a>'
                            , '<button type="button" class="layui-btn layui-btn-xs filedel" style="background: #ff5722;"> <i class="layui-icon layui-icon-delete"></i>删除 </button>'
                            , '</td>'
                            , ' <td><input type="text" autocomplete="off" placeholder="请输入备注"  name="old_name1[' + res.id + ']"></td>'
                            , '</tr>'].join(''));
                        //删除
                        tr.find('.filedel').on('click', function () {
                            $.post('ajax.attach.file.del.php?MID={?$lev.MID?}',{id:res.id},function(data){
                                if (data.code > 0)
                                    parent.layer.msg(data.msg, {offset: '0px', icon: 2, time: 1000});
                                else
                                    tr.remove();
                            });

                        });
                        $("#fileList").append(tr);

                        var title = $("#title");
                        if(title.val() == '')
                            title.val(res.old_name);
                    }
                }
            }
        }
    }
</script>
复制代码

php:

ajax.files.upload.php
复制代码
header("Content-Type:text/html;charset=UTF-8");$CODE = $_GET['upfilecode'];
$PATH = $_GET['path'];


$a = new UPFILE($CODE, $PATH, $_FILES['file'], $pl);


class UPFILE
{
    public $pl = '';
    public $file = '';

    public function __construct($code, $path, $file, $pl)
    {
        if ($code == '')
            $this->ExtFrm(1, "缺少上传编码");
        if ($path == '')
            $this->ExtFrm(2, "缺少上传路径");
        if (!$file)
            $this->ExtFrm(3, "找不到上传文件");
        if ($file['size'] > 1024 * 1024 * 50) {
            $this->ExtFrm(3, "上传失败,文件大小超过限制(文件大小:50MB)");
        }
        $size=round($file['size']/1024/1024, 2);
        $this->pl = $pl;
        $this->file = $file;
        $this->type = $path;

        $filePath = $this->createFile($path);
        $fileOld = $this->verifyFile();
        $this->fileupload($code, $filePath, $fileOld,$size);
    }

    /**
     * Method:createFile
     * Desc:创建文件路径
     */
    public function createFile($path)
    {
        $Ym = date('Ym');
        $filepath = $Ym . ($path != "" ? "/" : "") . $path;
        $fullpath = '../upfiles/' . $filepath;
        if (!is_dir($fullpath)) {
            $res = mkdir($fullpath, 0777, true);
        }
        return array($filepath . "/", $fullpath . "/");
    }

    /**
     * Method:verifyFile
     * Desc:验证文件格式
     */
    public function verifyFile()
    {
        $pinfo = pathinfo($this->file["name"]);
        $extension = strtolower($pinfo['extension']);
        switch ($this->type) {
            case 'message_img': //消息推送 - 富文本 图片上传
                $file_format = array("jpg", "jpeg", "gif", "png");
                if (!in_array($extension, $file_format)) {
                    $this->ExtFrm(4, "上传失败,文件格式不正确(支持:jpg,gif,png)");
                }
                break;
            default:
                $file_format = array("jpg", "jpeg", "gif", "png", "rar", "zip", "doc", "docx", "xls", "xlsx", "pdf", "txt", "ppt", "pptx", "tif",'mp4');
                if (!in_array($extension, $file_format)) {
                    $this->ExtFrm(4, "上传失败,文件格式不正确(支持:jpg,gif,png,rar,zip,doc,docx,xls,xlsx,pdf,txt,ppt,pptx,tif,mp4)");
                }
                break;
        }
        return array("filename" => $pinfo['filename'], "extension" => $extension);
    }

    /**
     * Method:fileupload
     * Desc:上传文件
     */
    public function fileupload($code, $filepath, $fileold,$size)
    {
        $old_name = $fileold['filename'];
        $new_name = time() . rand(0, 500000) . dechex(rand(0, 10000));
        move_uploaded_file($this->file['tmp_name'], $filepath[1] . $new_name . "." . $fileold['extension']);

        if ($this->type != 'message_img') {
            $sql = "insert into system_attach (`BM`,`YFJMC`,`XFJMC`,`WJLJ`,`WJLX`,`CJSJ`,`CJRID`,`CJRMC`,`SIZE`) values (:BM,:YFJMC,:XFJMC,:WJLJ,:WJLX,:CJSJ,:CJRID,:CJRMC,:SIZE)";
            $this->pl->query($qry, $sql, array(
                ":BM" => $code,
                ":YFJMC" => $old_name . ".",
                ":XFJMC" => $new_name . "." . $fileold['extension'],
                ":WJLJ" => $filepath[0],
                ":WJLX" => $fileold['extension'],
                ":CJSJ" => date("Y-m-d H:i:s"),
                ":CJRID" => $_SESSION['UID'],
                ":CJRMC" => $_SESSION['NAME'],
                ":SIZE" => $size,
            ));
            $id = $this->pl->insert_id();
        }
        $this->ExtFrm(0, "上传成功", $id, $filepath[1], $new_name, $old_name, $fileold['extension']);
    }

    /**
     * Method:extFrm
     * Desc:结果返回
     */
    public function extFrm($code, $msg, $id = 0, $filepath = "", $new_name = '', $old_name = '', $file_ext = "")
    {
        if ($code > 0) {
            $ExtFrm = array("code" => $code, "msg" => $msg);
        } else if ($this->type == 'message_img') {
            $title = $new_name . "." . $file_ext;
            $ExtFrm = array("code" => $code, "msg" => $msg, "data" => array("src" => $filepath . $title, "title" => $title));
        } else {
            $ExtFrm = array("code" => $code, "msg" => $msg, "id" => $id, "path" => $filepath, "new_name" => $new_name, "old_name" => $old_name, "file_ext" => $file_ext);
        }
        exit(json_encode($ExtFrm));
    }
}

?>

标签:function,code,name,layui,file,new,PHP,上传
From: https://www.cnblogs.com/tomcat2022/p/16899439.html

相关文章

  • centos7 php 服务重启
    apache服务启动systemctlstarthttpd停止systemctlstophttpd重启systemctlrestarthttpdmysql服务启动systemctlstartmysqld停止systemctlstopmysq......
  • PHP-CGI、FASTCGI和php-fpm的关系
    首先,CGI是干嘛的?CGI是为了保证webserver传递过来的数据是标准格式的,方便CGI程序的编写者。webserver(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么webse......
  • GIT文件上传演示
    BeWrittenByHandat.憨大头 注:以下内容默认你已经做好了git工具的用户账户配置。(1)创建Gitee线上代码仓库,HTTPS协议地址就是仓库地址,如例https://gitee.com/silly-big......
  • php 获取月份的开始结束时间
    function mFristAndLast($y=0,$m=0){    $y = $y ? $y : date('Y');    $m = $m ? $m : date('m');    $d = date('t', strtotime($y.'-'.......
  • PHP 之将数组拼接为sql语句
    一、代码/***拼接sql语句*@param$table*@param$array*@returnstring*/functioninsertSql($table,$array){$sqlk='';$sqlv='';f......
  • PHP 之正则匹配获取img标签图片地址
    一、代码/***对富文本信息中的数据*匹配出所有的<img>标签的src属性*@paramstring$contentStr富文本字符串*@returnarray*/functiongetPatternMa......
  • 使用python中的requests库调用接口上传文件
    importrequestsurl="https://192.168.4.103/iof/base/resource/addResourceBf"payload={'resoId':'reso_fenlei16568654548266IP134232246455','resoName':'12......
  • php中的依赖注入模式
    概念 依赖注入模式(DependencyInjection),用松散耦合的方式来更好的实现可测试、可维护和可扩展的代码。依赖注入模式是控制反转(InversionofControl)的一种实现方式。要实......
  • php中的状态模式
    概念 状态模式当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的......
  • php中介者模式
    概念 中介者模式用于开发一个对象,这个对象能够在类似对象相互之间不直接相互的情况下传送或者调解对这些对象的集合的修改。一般处理具有类似属性,需要保持同步的非耦合对象......