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

末鹿安然 提交于 2020-02-14 01:19:41

主要看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("请求类型错误");
        }
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!