模板

{extend name="public/base" /}
{block name="body"} <div class="row">
<div class="col-md-8"> <div class="page-header">
<h2>发布文章</h2>
</div>
<form id="uploadForm">
<input type="hidden" value="{$Think.session.user_id}" name="user_id" id="user_id" /> <div class="form-group">
<label>标题</label>
<input type="text" name="title" id="title" class="form-control" placeholder="文章标题">
</div> <div class="form-group">
<label >栏目</label>
<select class="form-control" name="cate_id" id="cate_id">
{volist name="cateList" id="vo"}
<option value="{$vo.id}">{$vo.name}</option>
{/volist}
</select>
</div> <div class="form-group">
<label>内容</label>
<textarea id="content" class="form-control" rows="8" name="content" placeholder="内容"></textarea>
</div> <div class="form-group">
<label >封面图</label>
<input type="file" name="title_img" id="inputfile" >
<!-- <p class="help-block">Example block-level help text here.</p> -->
<div id="info" style=" color:red;margin-bottom: 3px;margin-top: 8px;"></div>
</div> </form> <div class="form-group">
<button class="btn btn-primary" id="register" style="width:100%">发布</button>
</div> </div> <script>
$(function(){ $("#register").on('click',function(){ var img = $("#inputfile").prop("files")[0];
var formData = new FormData();
formData.append('title_img', img);
formData.append('user_id', $('#user_id').val());
formData.append('title', $('#title').val());
formData.append('cate_id',$('#cate_id').val());
formData.append('content', $('#content').val()); $.ajax({
url:"{:url('index/insertcl')}",
type:"post",
data:formData,
dataType:'json',
cache: false,
processData: false,
contentType: false,
success:function(data){
//如果输入不合格
if(data.status==-1){
$('#info').text(data.message);
}else{
alert(data.message);
window.location.href="{:url('index/index')}";
}
}
});
});
});
</script>
{/block}

后台

    //发布文章操作
public function insertcl(){
$data = $_POST;
$data['title_img'] =request()->file('title_img');
//验证器
$rule = 'app\common\validate\Article';
$res = $this->validate($data,$rule);
//验证结果
if($res!==true){
return ['status'=>-1,'message'=>$res];
} //获取file对象
$file = $data['title_img'];
//文件信息验证与上传到服务器指定目录
$info = $file->validate([
'size'=>5000000, //文件大小
'ext'=>'jpg,jpeg,png,gif' //文件拓展名
])->move('uploads/'); //移动到public/uploads目录下 //错误就报错
if($info==false){
return ['status'=>-1,'message'=>$file->getError()];
} //获取文件名
$data['title_img'] = $info->getSaveName(); $result = Article::create($data); if($result){
return ['status'=>1,'message'=>'发布成功'];
}
return ['status'=>0,'message'=>'发布失败']; }

THINKPHP 模板上传图片--后台接收图片的更多相关文章

  1. CKEditor+SWFUpload实现功能较为强大的编辑器(三)---后台接收图片流程

    在前台配置完CKEditor和SWFUpload之后就可以满足基本的需求了 在这里,我配置的接收异步上传的图片的页面为upload.ashx 在这个ashx中对上传的图片处理的流程如下: contex ...

  2. Android选择/拍照 剪裁 base64/16进制/byte上传图片+PHP接收图片

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/65633129认为博文实用,请点赞,请评论,请关注.谢谢! ~ 老规矩,先上GIF动态图 ...

  3. 前台页面上传data image图片,java后台接收图片保存

    最近在项目中有这么一个需求,就是上传一个视频文件,然后要获取视频文件的第一帧图片,这个可以通过canvas获取得到,得到的是一个dataURL,之后还要将这个图片上传到云,这个时候如何操作就不清楚了, ...

  4. base64编码上传图片java后台接收实例

    原文地址:http://blog.csdn.net/tonyfreak/article/details/72522855 思路 前台传以data:image/jpeg;base64,开头的base64 ...

  5. 安卓发送图片文字,java后台接收

    安卓使用retrofit2 和rxjava2 url: @Multipart @POST(UrlTools.STORYUPLOAD) Observable<Result> saveRepo ...

  6. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  7. 利用ThinkPHP搭建网站后台架构

    记录一下ThinkPHP搭建网站后台.调整好样式等操作步骤 下载好ThinkPHP(3.2.3),解压后将核心文件夹ThinkPHP以及index.php等文件复制到网站根目录如下图 对index.p ...

  8. ThinkPHP中使用ajax接收json数据的方法

    本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先 ...

  9. thinkphp达到UploadFile.class.php图片上传功能

    片上传在站点里是非经常常使用的功能.ThinkPHP里也有自带的图片上传类(UploadFile.class.php) 和图片模型类(Image.class.php).方便于我们去实现图片上传功能,以 ...

随机推荐

  1. PGET,一个简单、易用的并行获取数据框架

    使用场景 当我们的服务收到一个请求后,需要大量调用下游服务获取业务数据,然后对数据进行转换.计算后,响应给请求方. 如果我们采用串行获取下游数据,势必会增加响应时长,降低接口的qps.如果是并行获取下 ...

  2. DFS-B - Dr. Evil Underscores

    B - Dr. Evil Underscores Today, as a friendship gift, Bakry gave Badawy nn integers a1,a2,…,ana1,a2, ...

  3. php 公众号开发

    思考: 1,优先使用php扩展库的sdk,配合微信文档. 2,公众号开发比较简单,重在业务. 公众号关联与消息分发 <?php namespace app\wap\controller; use ...

  4. gulp-sass设置不同样式风格的输出方法

    sass最终输出的样式包括下面几种样式风格:嵌套输出方式 nested展开输出方式 expanded 紧凑输出方式 compact 压缩输出方式 compressed sass: nav { ul { ...

  5. LeetCode136. 只出现一次的数字(异或)

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...

  6. 关于在Ubuntu中无法使用tree命令的原因

    初学linux系统的时候使用的是Ubuntu的操作系统,边看视频边学习,却发现很多命令行在自己使用的时候没有效果,只会盲目的百度,后面回过头来仔细一看才发现,原来终端早就给你答案了,只是自己一看到英语 ...

  7. dataTables插件的使用

    用到dataTables这个插件还是因为Metronic这个框架里有用到,不然我不会选择它的,为啥呢?就感觉它的文档有点复杂(当然,也有我智商不够用的原因):既然用了,那就说说我遇到的问题吧,以防下次 ...

  8. nginx配置长连接(ajax60秒请求超时)

    个人博客 地址:http://www.wenhaofan.com/article/20180911150337 1.在使用ajax做轮训的时候前台发出的ajax请求总是会在60秒之后返回405超时响应 ...

  9. VMware该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权

    原文链接:https://blog.csdn.net/helloxiaozhe/article/details/81176684 VMware该虚拟机似乎正在使用中.如果该虚拟机未在使用,请按“获取所 ...

  10. PTA-1003 我要通过!

    1003 我要通过!https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192 “答案正确”是自动判题系 ...