模板

{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. 《javascript正则表达式迷你书》笔记

    字符匹配攻略 横向匹配--通过量词 {m,n} {m,} {m} ? + * 贪婪匹配 后面跟?号 惰性匹配 纵向匹配--通过字符组 \d \D \w \W \s \S . \w表示[0-9a-zA- ...

  2. 使用vim打开文件的16进制形式,编辑和全文替换

    1.先用vim打开文件的二进制形式,如果不以二进制可能会产生转换错误. vim -b file-to-open.dat 2.用xxd把文件转换成十六进制格式 :%!xxd 现在就可以对待普通文本一样查 ...

  3. Redis03——Redis之单线程+多路IO复用技术

    Redis 是单线程+多路IO复用技术 多路复用:使用一个线程来检查多个文件描述符的就绪状态 如果有一个文件描述符就绪,则返回 否则阻塞直到超时 得到就绪状态后进行真正的操作可以在同一个线程里执行,也 ...

  4. maven - 一键删除maven仓库无效jar包工具

    背景 在进行maven开发时,往往需要下载大量jar包,而由于网络不稳定等其他因素可能导致jar未下载完毕,然后保留了lastUpdated文件,导致无法更新失效的jar包. 现在提供个bat脚本,只 ...

  5. shell-快速抽样

    有时我们需要对文件进行抽样,这时候只需要一个shell命令就可以抽取固定行数的样本:shuf shuf -n $m $file 参数有2: -n: 抽样行数 -r: 是否重复

  6. Codeforces 577A - Multiplication Table

    Let's consider a table consisting of n rows and n columns. The cell located at the intersection of i ...

  7. 基于 Ant Desigin 的后台管理项目打包优化实践

    背景 按照 Ant Design 官网用 React 脚手构建的后台项目,刚接手项目的时候大概30条路由左右,我的用的机子是 Mac 8G 内存,打包完成需要耗时2分钟左右,决定优化一下. 项目技术栈 ...

  8. Selenium3+python自动化009- 截图

    一.断言 assert cur_title=='百度一下,你就知道1','title断言失败' 'title断言失败':自定义报错 二.截图 # 调用截屏方法(路径+截图名称)driver.get_s ...

  9. 未安装Oracle数据库,使用PL\SQL Developer连接远程数据库解决方案

    使用PL/SQL远程连接Oracle服务器 背景:本地未安装oracle数据库服务器,希望远程连接Oracle服务器 1.下载oracle数据库客户端 下载64位windows的instantclie ...

  10. 155.XSS攻击原理

    XSS攻击: XSS(Cross Site Script)攻击叫做跨站脚本攻击,他的原理是用户使用具有XSS漏洞的网站的时候,向这个网站提交一些恶意代码,当用户在访问这个网站的某个页面的时候,这个恶意 ...