tp5 HTML formdata 上传文件

admin3年前PHP582

php后端

//上传
    public function upload(){
        $f = addslashes(trim($_GET['filename']));
        $filename = $_FILES[$f]['name'];
        if(empty($filename))
        {
            echo json_encode(
                array(
                    'status' => 'fail',
                    'msg' => '请上传文档'
                )
            );
            exit();
        }
        
        $validate_ext = tpCache('basic.image_type');
        if (!empty($validate_ext)) {
            $validate['ext'] = explode('|', $validate_ext);
        }
        
        $upname = strrev($_FILES[$f]['name']);
        $array = explode('.',$upname);
        $upname = strrev($array[0]);
        
        if(!in_array($upname, $validate['ext']))
        {
            echo json_encode(
                array(
                    'status' => 'fail',
                    'msg' => '允许上传的文件格式为:'.$validate_ext
                )
            );
            exit();
        }
        $maxFileupload = @ini_get('file_uploads') ? ini_get('upload_max_filesize') : 0;
        $max_file_size = intval(tpCache('basic.file_size'));
        $file_size = $_FILES[$f]['size'] / 1024 / 1024;

        if ($file_size > $max_file_size || $file_size > $maxFileupload) {
            echo json_encode(
                array(
                    'status' => 'fail',
                    'msg' => "上传大小超过限制(".$file_size."M)"
                )
            );
            exit();
        }
        
        
        /*验证图片一句话木马*/
        $imgstr = @file_get_contents($_FILES[$f]['tmp_name']);
        if (false !== $imgstr && preg_match('#<\?php#i', $imgstr)) {
            return ['status' => 'fail','msg'=>'上传文件不合格'];
        }
        
        if ($_FILES[$f]["error"] > 0)
        {
            echo json_encode(
                array(
                    'status' => 'fail',
                    'msg' => '上传错误'
                )
            );
            exit();
        }
        //生成目录
        $dirname = './uploads/user/'.$this->users_id;
        if(!is_dir($dirname))
        {
            mkdir($dirname,0777,true);
        }
        $filename = $dirname . '/' . date('YmdHis').rand(1000,9999) . '.' . $upname;
        //判断文件是否已存在
        move_uploaded_file($_FILES[$f]["tmp_name"], $filename);
        echo json_encode(
            array(
                'status' => 'success',
                'msg' => str_replace('./', '/', $filename)
            )
        );
        exit();
    }

html5前端

function selectVideo(){
        var index = layer.load(1, {
            shade: [0.3,'#000'] 
        });
        if($('input[name=v]').val() == ''){
            layer.msg('请选择视频');
            return;
        }
        var video = $('input[name=v]')[0].files[0];
        var formData = new FormData();
        formData.append('video', video);
        $.ajax({
            type:'POST',
            dataType: 'Json',
            url:"{:url('House/videoUpload')}",
            data: formData,
            processData: false,
            contentType: false,
            success:function(msg){
                if(msg.status == 'fail'){
                    layer.msg(msg.msg);
                    layer.close(index);
                }else{
                    layer.msg('上传成功');
                    $('input[name=video]').val(msg.msg);
                    $('#videoShow').attr('src', msg.msg).show();
                    layer.close(index);
                }
            }
        }); 
    }


相关文章

Yii2 手册

https://www.kancloud.cn/moxuandi/yii2-class...

php切片上传

html    <style>        html {...

安装Composer

最近有朋友也开始审TP框架,问我之前TP源码下载方式,当然是Composer安装啦!顺便就来写个博客说一说怎么装Composer    安装composer的前提是正确安...

opencart paypal 体验账号测试支付

opencart paypal 体验账号测试支付

很多朋友在设置独立站后台Paypal收款时,经常看到Live和Sandbox这两个字眼。是否会产生疑惑:这是干什么的呢?其实这里的LIVE模式是正常付款环境下的付款模式,Sandbox就是我们所说的沙...

opencart教程 上传产品

opencart教程 上传产品

点击左边导航【商品目录】【商品管理】点击右上角加号,新增商品填写数据时,以下是必填分类选择如下...

腾讯云点播总结

防盗链设置 https://cloud.tencent.com/document/product/266/14047超级播放器签名 https://cloud.tencent.com/document...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。