前台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 上传图片使用的更多相关文章

  1. ajax上传图片

    选择文件后 ajax上传图片到后台,后台执行保存操作,返回上传的图片路径,显示到页面 需要引入ajaxfileupload.js js代码 <script type="text/jav ...

  2. sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)

    sql server 关于表中只增标识问题   由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...

  3. 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器

    使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...

  4. Ajax上传图片以及上传之前先预览

    手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果 ...

  5. asp.net core 通过ajax上传图片及wangEditor图片上传

    asp.net core 通过ajax上传图片 .net core前端代码,因为是通过ajax调用,首先要保证ajax能调用后台代码,具体参见上一篇.net core 使用ajax调用后台代码. 前端 ...

  6. vuejs使用FormData对象,ajax上传图片文件

    我相信很多使用vuejs的朋友,都有采用ajax上传图片的需求,因为前后端分离后,我们希望都能用ajax来解决数据问题,传统的表单提交会导致提交成功后页面跳转,而使用ajax能够无刷新上传图片等文件. ...

  7. php form表单ajax上传图片方法

    form表单ajax上传图片方法 先引用jquery.form.js 前台代码<pre><form id="form1"> <input id=&qu ...

  8. 使用ajax上传图片,并且使用canvas实现出上传进度效果

    前端代码: <%@ page contentType="text/html;charset=UTF-8" language="java" %> &l ...

  9. 十六、ajax上传图片 mvc

    一.ajax上传图片 mvc 前台html     <img id="uploadimg1" class="uploadimg" src="~/ ...

随机推荐

  1. C#正则表达式之字符替换

    string strTest= "www.BaiDu.com",strRst=""; //忽略大小写,将strTest中的BaiDu替换为baidu Regex ...

  2. c#中virtual, abstract和override的区别和用法

    virtual是把一个方法声明为虚方法,使派生类可重写此方法,一般建立的方法是不能够重写的,譬如类A中有个方法protected void method(){ 原代码....;}类B继承自类A,类B能 ...

  3. DLX模板

    对于数独问题 ; //3*3数独 ; // 一格能填9个数 9*9格 +; // 9*9*4=(9+9+9)*9+9*9 (9+9+9)是9行 9列 9格 *9是9个数 9*9是81个格子 +MaxM ...

  4. 如何让centos6.5在vm11里上网,连接网络?

    如何让centos在vm里连接网络?步骤有3,方可解决: 1.配置vm的虚拟网络编辑器 2.配置虚拟机centos 3.设置centos的ip地址 一.配置vm的虚拟网络编辑器

  5. 转载爱哥自定义View系列--Paint详解

    上图是paint中的各种set方法 这些属性大多我们都可以见名知意,很好理解,即便如此,哥还是带大家过一遍逐个剖析其用法,其中会不定穿插各种绘图类比如Canvas.Xfermode.ColorFilt ...

  6. html5 鼠标跟随运动

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  7. IPv6 tutorial – Part 5: Address types and global unicast addresses

    https://4sysops.com/archives/ipv6-tutorial-part-5-address-types-and-global-unicast-addresses/ In my ...

  8. Oracle系列之序列

    涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等 语法结构:创建序列 create sequence sequence_name start with num increment by ...

  9. MVC——母版与分部

    背景: 母版是因为有一些网站里的很多网页都是采用相同的布局,所以只需要写一个母版,然后在母版该写不同模板的地方加上@RenderBody(),然后创建不同模块的时候只需要创建视图,然后选择母版就可以了 ...

  10. bzoj2527

    首先环可以变成链来处理,对于l>r的情况就是修改区间[1,r],[l,mx]然后不难想到整体二分,二分答案k,然后算1~k场流星雨对国家的贡献然后判定将国家划分变成子问题解决,没什么难的终于不是 ...