文章发布功能--涉及到 文件上传和保存、数据的保存

主要看save方法
可以参看thinkphp5.1文档中杂项里的 上传 :
https://www.kancloud.cn/manual/thinkphp5_1/354121

<?php
namespace app\index\controller;
use app\common\controller\Base;//导入公共控制器
use app\common\model\Article;//导入文章模型
use app\common\model\ArticleCategory;//导入文章栏目模型
use think\facade\Request;

class Index extends Base
{
    public function index()
    {
        return $this->fetch();
    }

    //添加文章界面
    public function insert()
    {
        //1.登录才允许发布
        $this->isLogin();
        //2.设置页面标题
        $this->view->assign('title','发布文章');
        //3.获取栏目的信息
        $cateList = ArticleCategory::all();
        if(count($cateList)>0){
            //将查询到的栏目信息赋值给模板
            $this->assign('cateList',$cateList);
        }else{
            $this->error('请先添加栏目','index/index');
        }
        //4.发布界面渲染
       return  $this->fetch('insert');
    }

    //保存文章
    public function save()
    {
        //判断提交类型
        if(Request::isPost()){
            //1.获取一下用户提交的文章信息
            $data = Request::post();
            $res = $this->validate($data,'app\common\validate\Article');
            if(true !== $res){
                //验证失败
                echo '<script>alert("'.$res.'");window.location.href="insert";</script>';
            }else{
                //验证成功
                //获取一下上传图片的信息  也就是文件对象 title_img与前端字段相同且与数据库字段相同
                $file = Request::file('title_img');
                //文件信息验证成功后,再上传到服务器上的指定 目录,以 public 为起始目录
                $info = $file->validate([
                    'size'=>1000000,
                    'ext'=>'jpeg,jpg,png,gif',
                ])->move('uploads/');
                if($info){
                    $data['title_img'] = $info->getSaveName();
                }else{
                    $this->error($file->getError());
                }
                //将数据写到数据表中
                if(Article::create($data)){
                    $this->success("文章发布成功","index/index");
                }else{
                    $this->error("文章保存失败");
                }
            }
        }else{
            $this->error("请求类型错误");
        }
    }
}

前端代码为
insert.html

<?php
namespace app\index\controller;
use app\common\controller\Base;//导入公共控制器
use app\common\model\Article;//导入文章模型
use app\common\model\ArticleCategory;//导入文章栏目模型
use think\facade\Request;

class Index extends Base
{
    public function index()
    {
        return $this->fetch();
    }

    //添加文章界面
    public function insert()
    {
        //1.登录才允许发布
        $this->isLogin();
        //2.设置页面标题
        $this->view->assign('title','发布文章');
        //3.获取栏目的信息
        $cateList = ArticleCategory::all();
        if(count($cateList)>0){
            //将查询到的栏目信息赋值给模板
            $this->assign('cateList',$cateList);
        }else{
            $this->error('请先添加栏目','index/index');
        }
        //4.发布界面渲染
       return  $this->fetch('insert');
    }

    //保存文章
    public function save()
    {
        //判断提交类型
        if(Request::isPost()){
            //1.获取一下用户提交的文章信息
            $data = Request::post();
            $res = $this->validate($data,'app\common\validate\Article');
            if(true !== $res){
                //验证失败
                echo '<script>alert("'.$res.'");window.location.href="insert";</script>';
            }else{
                //验证成功
                //获取一下上传图片的信息  也就是文件对象 title_img与前端字段相同且与数据库字段相同
                $file = Request::file('title_img');
                //文件信息验证成功后,再上传到服务器上的指定 目录,以 public 为起始目录
                $info = $file->validate([
                    'size'=>1000000,
                    'ext'=>'jpeg,jpg,png,gif',
                ])->move('uploads/');
                if($info){
                    $data['title_img'] = $info->getSaveName();
                }else{
                    $this->error($file->getError());
                }
                //将数据写到数据表中
                if(Article::create($data)){
                    $this->success("文章发布成功","index/index");
                }else{
                    $this->error("文章保存失败");
                }
            }
        }else{
            $this->error("请求类型错误");
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值