thinkphp的同步上传图片和异步上传图片
同步:
前台页面:
<div class="form-div">
<form action="{:url('index/i/edit_head_img_cl')}" enctype="multipart/form-data" method="post">
<input type="file" name="image" accept="image/gif, image/jpg ,image/png"/> <br>
<p style="color:red">仅支持不大于5m,后缀为jpg,png,gif的图片</p>
<input type="submit" value="上传" />
</form>
</div>
后台页面:
//处理头像修改
public function edit_head_img_cl(){ //检验用户是否登陆,并获取user_id
if($this->check_log['ok'] == '-1'){
$this->error($this->check_log['error']);
}
$user_id = $this->check_log['id'];
echo '';
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file('image');
echo '';
// 移动到框架应用根目录/public/uploads/ 目录下
if($file){
$info = $file->validate(['size'=>,'ext'=>'jpg,png,gif'])->move('static/uploads/');
if($info){
// 成功上传后 获取上传信息
// 输出 jpg
/* echo $info->getExtension();
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
echo $info->getSaveName();
// 输出 42a79759f284b767dfcb2a0197904287.jpg
echo $info->getFilename(); */
$ing_url = $info->getSaveName();
//把url写进头像
$res = UserDB::update(['id'=>$user_id,'head_img'=>$ing_url]);
if(!$res){
echo '系统故障,更换头像失败';
}else{
echo '<script type="text/javascript">parent.location.reload();</script>';
} }else{
// 上传失败获取错误信息
echo $file->getError();
}
}else{
echo request()->post('image');
}
}
异步:
前台页面:
<tr>
<td>头像(异步上传):</td>
<td>
{if $user.head_img == ''}
<img src="__STATIC__/uploads/{$site_setup.default_img}" style="width: 50px;height: 50px;" class="head-img">
{else/}
<img src="__STATIC__/uploads/{$user.head_img}" style="width: 50px;height: 50px;" class="head-img">
{/if}
</td>
<td>
<input type="file" multiple="multiple" id="inputfile" name="" class="photo"> </td>
</tr>
//图片异步上传
$("#inputfile").change(function(){
console.log($(this).val());
/*alert(1);*/
var file = $('#inputfile')[].files[];
var data = new FormData();
/* console.log($('#inputfile'));*/
data.append('image', file); $.ajax({
url:"{:url('index/i/edit_head_img_cl_yb')}", /*去过那个php文件*/
type:'POST', /*提交方式*/
data:data,
dataType: "json",
cache: false,
contentType: false, /*不可缺*/
processData: false, /*不可缺*/
mimeType: "multipart/form-data",
success:function(data){
if(data.ok == ''){
//把头像换成新的
$(".head-img").attr("src","__STATIC__/uploads/"+data.url);
}
alert(data.message);
},
error:function(data){
alert('上传出错');
}
});
});
后台页面:
//处理头像修改(异步)
public function edit_head_img_cl_yb(){ //检验用户是否登陆,并获取user_id
if($this->check_log['ok'] == '-1'){
return ['ok'=>'-1','message'=>$this->check_log['error']];
}
$user_id = $this->check_log['id']; // 获取表单上传文件 例如上传了001.jpg
$file = request()->file('image'); // 移动到框架应用根目录/public/uploads/ 目录下
if($file){
$info = $file->validate(['size'=>,'ext'=>'jpg,png,gif'])->move('static/uploads/');
if($info){
// 成功上传后 获取上传信息
// 输出 jpg
/* echo $info->getExtension();
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
echo $info->getSaveName();
// 输出 42a79759f284b767dfcb2a0197904287.jpg
echo $info->getFilename(); */
$ing_url = $info->getSaveName();
//把url写进头像
$res = UserDB::update(['id'=>$user_id,'head_img'=>$ing_url]);
if(!$res){
return ['ok'=>'-1','message'=>'系统故障,更换头像失败']; }else{
return ['ok'=>'','message'=>'上传成功!','url'=>$ing_url];
} }else{
// 上传失败获取错误信息
return ['ok'=>'-1','message'=>$file->getError()];
}
}else{
return ['ok'=>'-1','message'=>'没有接收到图片!'];
}
}
thinkphp的同步上传图片和异步上传图片的更多相关文章
- Jquery实现异步上传图片
利用jQuery的ajax函数就可以实现异步上传图片了.一开始我是想在处理程序中,直接用context.Request.Files来获取页面中的input file,但是不知道为什么一次获取不了.网上 ...
- 异步上传图片,光用jquery不行,得用jquery.form.js插件
异步上传图片,光用jquery不行,得用jquery.form.js插件,百度一下下载这个插件,加jquery,引入就可以了 <form id="postbackground" ...
- [Ajax] 使用Ajax异步上传图片文件(非Form表单提交)
通过表单Form提交来上传文件的方式这里就不说了: 下面介绍,通过js中使用ajax异步上传图片文件: 新建一个html页面和一个一般处理程序即可: 涉及思路: //发送2次Ajax请求完成js异步上 ...
- 利用KindEditor的uploadbutton实现异步上传图片
利用KindEditor的uploadbutton实现异步上传图片 异步上传图片最经常使用的方法就是图片在iframe中上传.这样仅仅须要刷新iframe.而不用刷新整个页面. KindEdi ...
- php结合jquery异步上传图片(ajaxSubmit)
php结合jquery异步上传图片(ajaxSubmit),以下为提交页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...
- C# 异步上传图片案例
好久没写博客了,都感觉自己快堕落了!今天随性写一篇关于异步上传图片的程序及插件! 说是程序及插件,其实程序占大头,所谓的插件只是两个JS.分别为:jquery.html5upload.js 和 jqu ...
- 使用Ajax异步上传图片的方法(html,javascript,php)
前两天项目中需要用到异步上传图片和显示上传进度的功能,于是找了很多外国的文章,翻山越岭地去遇上各种坑,这里写篇文章记录一下. HTML <form id="fileupload-for ...
- Ajax实现异步上传图片
要求:点击页面浏览按钮后,选择需要上传的图片,页面无刷新,将上传的图片展示出来 开发流程 一:在页面编写表单代码和js代码 <!DOCTYPE html PUBLIC "-//W3C/ ...
- MVC异步上传图片到本地/服务器
这两天朋友问我,有没有异步上传图片到本地/服务器这种demo,他有用, 我就想,好吧, 那刚好周末了,整理一套出来. 主要用到的是jquery uploadify 这个juqery的插件 ,可以无刷新 ...
随机推荐
- Pwnable.kr
Dragon —— 堆之 uaf 开始堆的学习之旅. uaf漏洞利用到了堆的管理中fastbin的特性,关于堆的各种分配方式参见堆之*bin理解 在SecretLevel函数中,发现了隐藏的syste ...
- dubbo之心跳机制
在网络传输中,怎么确保通道连接的可用性是一个很重要的问题,简单的说,在网络通信中有客户端和服务端,一个负责发送请求,一个负责接收请求,在保证连接有效性的背景下,这两个物体扮演了什么角色,心跳机制能有效 ...
- Bootstrap Table踩坑——设置多级表头后只显示第一级表头问题解决办法
今天设置了Bootstrap Table的复杂表头,设置了多级表头(两行列名),但是只能显示第一级表头(第一行的列名),第二级的表头被第一级的表头覆盖.但是我仿照其他网上的其他设置复杂表头例子都能正常 ...
- js前后端交互
1.前后端交互模式 2.promise用法 (1)异步调用 (2)ajax回顾 (3).promise 优点:可以解决回调地狱(多层异步调用嵌套问题)(解决代码可读性低的问题) 提供简洁的api (4 ...
- Luogu1287 | 盒子与球 (排列组合)
贴一个和其他题解不一样的做法 QWQ 题意:让我们求出 N 个球放入 R 个盒子且每个盒子都必须放球方案数. 首先,对于每一个球,可以将其放入的盒子数量共有 R 个,所以我们可以知道如果无需满足每个盒 ...
- ReportViewer Win32Exception (0x80004005): 创建窗口句柄时出错
System.ComponentModel.Win32Exception (0x80004005): 创建窗口句柄时出错. 在 System.Windows.Forms.NativeWindow.Cr ...
- Docker最全教程——从理论到实战(十三)
前言 树莓派(Raspberry Pi)是一台卡片电脑(只有信用卡大小),我们可以使用树莓派做很多事情,比如智能家居的中控.航空器.BT下载器.挖矿机.智能机器人.小型服务器(花生壳+网站)等等. 目 ...
- R语言函数话学习笔记5
使用Tidyverse完成函数化编程 (参考了家翔学长的笔记) 1.magrittr包的使用 里面有很多的管道函数,,可以减少代码开发时间,提高代码可读性和维护性 1.1 四种pipeline 1.1 ...
- ASP.NET Identity-验证与授权及管道事件
https://www.cnblogs.com/OceanEyes/p/thinking-in-asp-net-mvc-apply-asp-net-identity-authentication.ht ...
- String Buffer和String Builder(String类深入理解)
String在Java里面JDK1.8后它属于一个特殊的类,在创建一个String基本对象的时候,String会向“ 字符串常量池(String constant pool)” 进行检索是否有该数 ...