前台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. 全国省市级联数据sql语句 mysql版

    全国省市级联数据sql语句 mysql版 --省级 provincial create table provincial ( provincialID int, provincialName ), p ...

  2. *[codility]StoneWall

    https://codility.com/demo/take-sample-test/stone_wall 拼石块.用最少的方块.一开始想了想用贪心,是可行的,就是尽量每次把当前的高度往右延伸到最多, ...

  3. spring+mybatis的优缺点

    mybatis的优缺点: 优点: 1. 易于上手和掌握. 2. sql写在xml里,便于统一管理和优化. 3. 解除sql与程序代码的耦合. 4. 提供映射标签,支持对象与数据库的orm字段关系映射 ...

  4. 【原创翻译】Reducing Branch Delay to Zero in Pipelined Processors

    在流水线处理器中减少分支延迟到零 Antonio M. Gonzalez and Jose M. Llaberia 摘要 一种减少流水处理器中分支延迟到零的机制将在本文被描述以及评估.这种机制基于多重 ...

  5. @Component("userService").@Resource(name="userDao")

    @Component("userService") public class UserService { private UserDAO userDao; public void ...

  6. 利用逻辑运算符?"三个数字比大小

    static void Main(string[] args)        {            int a, b, c;            while (true)            ...

  7. BZOJ_1625_ [Usaco2007_Dec]_宝石手镯_(01背包)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1625 01背包裸题. p.s.随便点开一道就是水题... 分析 ... #include &l ...

  8. App性能优化

    http://www.cocoachina.com/ios/20150429/11712.html http://blog.csdn.net/jasonblog/article/details/765 ...

  9. log4net面面观之Repository

    转:http://itrust.cnblogs.com/archive/2006/07/17/452895.html 上回说道:Repository可以说成基于一个log4net配置节创建的log4n ...

  10. MFC VS2005 添加Override 和 Message

    VS2005 1.Overrides OnInitDialog() 在Class View选中 这个类,然后properties中点Message 旁边的Overrides, 添加OnInitDial ...