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的插件 ,可以无刷新 ...
随机推荐
- H5_0017:通过元素自定义属性值获取元素对象,并获取属性值
// 通过元素的属性值查找对象 // document.querySelectorAll("[data]").forEach(function(e) ...
- 基于EFCore3.0+Dapper 封装Repository
Wei.Repository 基于EFCore3.0+Dapper 封装Repository,实现UnitOfWork,提供基本的CURD操作,可直接注入泛型Repository,也可以继承Repos ...
- CSS 实现一个自适应的正方形
传统方法正方形用固定的形式写 直接长=宽写固定的值如下 .box{ width: 200px; height: 200px; background: pink; color: ...
- 在vue项目中使用MD5.js
1.安装 npm install --save js-md5 2.引入 import md5 from 'js-md5'; 3.使用 md5('holle') // bcecb35d0a12baad4 ...
- Codeforce 230A - Dragons (sort)
Kirito is stuck on a level of the MMORPG he is playing now. To move on in the game, he's got to defe ...
- Apache服务:使用 Apache 服务部署静态网站
1.安装Apache服务 第一步:安装Apache服务程序 yum install httpd 具体流程参考https://www.cnblogs.com/python-wen/p/1016845 ...
- [CF527D] Clique Problem - 贪心
数轴上有n 个点,第i 个点的坐标为xi,权值为wi.两个点i,j之间存在一条边当且仅当 abs(xi-xj)>=wi+wj. 你需要求出这张图的最大团的点数. Solution 把每个点看作以 ...
- (转)git fetch + merge 和 git pull 的区别
转自:http://blog.csdn.net/a19881029/article/details/42245955 Git fetch和git pull都可以用来更新本地库,它们之间有什么区别呢? ...
- AntDesign(React)学习-1 创建环境
目录: AntDesign(React)学习-15 组件定义.connect.interface AntDesign(React)学习-14 使用UMI提供的antd模板 AntDesign(Reac ...
- SpringBoot 测试基类
每次写单元测试都要重复写一些方法.注解等,这里我写了一下测试的基类 (1) 记录测试方法运行的时间 (2)两个父类方法 print,可打印list和object对象 (3)一个属性 logger 记录 ...