ajaxfileUpload ajax 上传图片使用
前台html:
<div class="b-mg15 img-text" room_id="<?= $items['id'] ?>">
<a class="modal-get">
<img <?php if ($items['room_image']) {
$url = Url::to('@web' . '/' . $items['room_image']);
echo 'src' . '=' . $url;
} ?> id="room_image">
</a>
<div class="pull-txt upload_image"
room_id="<?= $items['id'] ?>" <?php if ($items['room_image']) echo "style=\"display: none\"" ?>>
<div class="b-mg15 t-mg60">
<span class="glyphicon glyphicon-user f50">
</span>
</div>
<a class="">
点击上传会议室图片
</a>
</div>
js代码:
$(".img-text").click(function () {
$("#fileToUpload").click();
$("#fileToUpload").attr('room_id', $(this).attr('room_id'));
});
//选择文件之后执行上传
$('#fileToUpload').on('change', function () {
$.ajaxFileUpload({
url: "<?=Url::toRoute('ajax-upload')?>",
secureuri: false,
fileElementId: 'fileToUpload',//file标签的id
dataType: 'json',//返回数据的类型
data: {_csrf: "<?=Yii::$app->request->getCsrfToken()?>", room_id: $(this).attr('room_id')},//一同上传的数据
success: function (data) {
//把图片替换
$("#room_image").attr('src', data.result);
window.location.reload();
},
error: function (data, status, e) {
alert(e);
}
});
});
后台 php 代码:
/**
* ajax 上传图片
* @return string
*/
public function actionAjaxUpload()
{
return json_encode(MeetRoomService::AjaxUploadImage());
}
/**
* ajax 上传图片
* @return string
*/
public static function AjaxUploadImage()
{
$returnData = [];
$company_id = Yii::$app->company->getId();
$room_id = Yii::$app->request->post('room_id','');
$room = MeetRooms::find()->where(['id'=>$room_id])->one();
$typeArr = array("jpg", "png", "gif");//允许上传文件格式
$path = 'meetRoomImg/' . $company_id.'/';
$dirPath = 'meetRoomImg';
if(!file_exists($dirPath))
{
mkdir($dirPath, 0777);
chmod($dirPath, 0777);
}
if (!file_exists($path)) { mkdir($path, 0777);
chmod($path, 0777);
}
if (isset($_POST)) {
$name = $_FILES['upfile']['name'];
$size = $_FILES['upfile']['size'];
$name_tmp = $_FILES['upfile']['tmp_name'];
if (empty($name)) {
$returnData['error'] = '您还未选择图片';
$returnData['code'] = 400;
return $returnData;
}
$type = strtolower(substr(strrchr($name, '.'), 1)); //获取文件类型
if (!in_array($type, $typeArr)) {
$returnData['error'] = '请上传jpg,png或gif类型的图片!';
$returnData['code'] = 400;
return $returnData;
}
if ($size > (5000 * 1024)) {
$returnData['error'] = '图片大小已超过5000KB';
$returnData['code'] = 400;
return $returnData;
}
$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
$orderSn = $yCode[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));
$pic_url = $path . '/' . date('Y-m-d') . $orderSn . '.' .$type;
$pic_name = date('Y-m-d') . $orderSn . '.' .$type;
if (move_uploaded_file($name_tmp, $pic_url)) { //临时文件转移到目标文件夹
$room->room_image = $pic_url;
$room->save(false);
$returnData['error'] = '0';
$returnData['result'] = $pic_url;
$returnData['code'] = 200;
} else {
$returnData['error'] = '上传有误,清检查服务器配置!';
$returnData['code'] = 400;
}
return $returnData;
}
}
注意问题:
上传成功之后没有执行回调函数。
打开ajaxfileupload.js拉到底下找到
[javascript] view plain copy
if ( type == "json" ) {
eval( "data = " + data );
}
改成:
[javascript] view plain copy
if ( type == "json" ) {
data = data.replace("<pre>","").replace("</pre>","");
//data = eval("("+data.replace("<pre>","").replace("</pre>","")+")");
链接:http://pan.baidu.com/s/1c2HWlRa 密码:ofb0
ajaxfileUpload ajax 上传图片使用的更多相关文章
- ajax上传图片
选择文件后 ajax上传图片到后台,后台执行保存操作,返回上传的图片路径,显示到页面 需要引入ajaxfileupload.js js代码 <script type="text/jav ...
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
sql server 关于表中只增标识问题 由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...
- 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器
使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...
- Ajax上传图片以及上传之前先预览
手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果 ...
- asp.net core 通过ajax上传图片及wangEditor图片上传
asp.net core 通过ajax上传图片 .net core前端代码,因为是通过ajax调用,首先要保证ajax能调用后台代码,具体参见上一篇.net core 使用ajax调用后台代码. 前端 ...
- vuejs使用FormData对象,ajax上传图片文件
我相信很多使用vuejs的朋友,都有采用ajax上传图片的需求,因为前后端分离后,我们希望都能用ajax来解决数据问题,传统的表单提交会导致提交成功后页面跳转,而使用ajax能够无刷新上传图片等文件. ...
- php form表单ajax上传图片方法
form表单ajax上传图片方法 先引用jquery.form.js 前台代码<pre><form id="form1"> <input id=&qu ...
- 使用ajax上传图片,并且使用canvas实现出上传进度效果
前端代码: <%@ page contentType="text/html;charset=UTF-8" language="java" %> &l ...
- 十六、ajax上传图片 mvc
一.ajax上传图片 mvc 前台html <img id="uploadimg1" class="uploadimg" src="~/ ...
随机推荐
- 增加字体和颜色样式-------CSS
通过使用CSS,控制文本的字体,风格和颜色 1.基本操作: body{ font-family: Verdana, Geneva, Tahoma, sans-serif } body{ font-si ...
- Hadoop集群系类文章
http://www.cnblogs.com/xia520pi/archive/2012/04/08/2437875.html 后续文章地址:http://www.xiapistudio.com/ta ...
- bzoj 2406: 矩阵 上下界网络流判定
2406: 矩阵 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 138 Solved: 46[Submit][Status][Discuss] De ...
- Sql狗血的Bit类型赋值与取值
Bit 数据类型在 SQL Server 数据库中以存储 1.0 进行存储. 往数据库中添加,修改 bit 类型的字段时,只能用 0 或者 1. 关于修改 Bit 类型的字段 1.若使用 SQL 语句 ...
- android 点滴记录 ICCID IMSI IMEI MEID 关系 和 区别,相关参数在什么情况下可以获取...
1:ICCID:Integrate circuit card identity 集成电路卡识别码(固化在手机SIM卡中) ICCID为IC卡的唯一识别号码,共有20位数字组成,其编码格式为:XXXXX ...
- 对于Unicode编码在js中和html中
1.对于Unicode在js中 var a="\u9102WQW121" 中"\"是需要转义的,直接在页面输出的效果
- mybatis UpdateByExampleMapper UpdateByExampleSelectiveMapper
/** * 通用Mapper接口,Example查询 * * @param <T> 不能为空 * @author liuzh */ public interface UpdateByExa ...
- Yii CDbCriteria
Yii的Active Recorder包装了很多. 特别是把SQL中 把where,order,limit,IN/not IN,like等常用短句都包含进CDbCriteria这个类中去,这样整个代码 ...
- trash目录: ~/.local/share/Trash
trash目录:~/.local/share/Trash
- NOI2014 起床困难综合症
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 225 Solved: 153[Submit][Stat ...