<a href="javascript:void(0);" url="{:U('teacherd?id='.$vo['id'])}" class="teacherd" uid="{$vo.id}"><if condition="$vo.spstatus eq 0" >上传批阅<else /> 已批阅 </if></a>

            $(".teacherd").click(function () {
var $this=$(this);
var id = $(this).attr("uid");
var url = $(this).attr('url');
var p_id = "{:I('p_id')}";
var display = 'none';
var src = '';
var content = '<div class="margin_left_10" style="margin:20px;"><input type="hidden" name="id" value="' + id + '" ><div class="form-item"><div class="controls"><label class="label">上传文件:<span class="check-tips" id="picture-size"></span></label><input type="file" id="upfile"><input type="hidden" name="photo" id="cover_id_picture_id"/><div class="upload-img-box"><div class="upload-pre-item" style="display:' + display + ';"><img src="' + src + '"/></div></div></div></div></form></div>';
layer.open({
type: ,
title: '上传审批',
content: content,
closeBtn: ,
area: ['350px', '250px'],
btn: '确定',
yes: function () {
var fd = new FormData();
var uname = $('#upfile').val().split('.'); //获取上传文件名并拆封成数组(获取后缀)
if((uname[] != 'docx') && ( uname[] != 'doc')){ alert(uname[]);
return false;
}
fd.append("upload", );
fd.append("id", id); //将id传入
fd.append("p_id",p_id); //p_id
fd.append("upfile", $("#upfile").get().files[]);
$.ajax({
url: "{:U('uploadss')}",
type: "POST",
processData: false,
contentType: false,
data: fd,
success: function (d) {
if(d.code == ){
$(".layui-layer-shade").hide();
$(".layui-layer-page").hide();
$(".bac").fadeIn();
$(".bac1").html("上传成功")
$this.html("已审批")
}else{
$("#layui-layer-shade1").hide();
$("#layui-layer1").hide();
$(".bac").fadeIn();
$(".bac1").html("上传失败")
}
// console.log(d);
} })
}
})
}); $(".closeA").on("click",function(){
$(".bac").fadeOut()
})
$(".layui-layer-btn0").on("click",function(){
$(".layui-layer-shade").hide();
$(".layui-layer-page").hide();
})

后台代码:

 /*
* 上传审批
* Carey
*/ public function uploadss() {
$id = $_POST['id']; //id
$p_id = $_POST['p_id']; $exam_listsDB = M('exam_lists');
$username = $exam_listsDB->where(array('id' => $id))->getField('username'); $username = iconv("UTF-8", "gb2312", $username); //转码utf8
$saveName = $username . '_' . $p_id . '_' . $id; //文件命名规则考场p_id_用户id; $rootpath = '../Public/Uploads/examsp/kc' . $p_id . '/';
mkdir($rootpath, ); $upload = new \Think\Upload(); // 实例化上传类
$upload->maxSize = ; // 设置附件上传大小 3M
$upload->exts = array('application/msword', 'doc', 'docx'); // 设置附件上传类型
$upload->rootPath = $rootpath; // 设置附件上传根目录 // 上传文件
$upload->autoSub = TRUE; //自动生成子目录
$upload->subName = 'py';
$upload->saveName = $saveName; //根据p_id-id
$upload->replace = TRUE; //存在同名是否覆盖 true覆盖 $info = $upload->uploadOne($_FILES['upfile']); if (!$info) {// 上传错误提示错误信息
$redata = array(
'code' => , 'info' => $info, 'files' => $_FILES, 'id' => $id, 'p_id' => $p_id, 'username' => $username,
);
} else {
// 上传成功
$info['savename'] = iconv("gb2312", "UTF-8", $info['savename']); //转码utf8
$cha_dourl['cha_dourl'] = 'Public/Uploads/examsp/' . $info['savepath'] . $info['savename'];
$cha_dourl['sptime'] = time();
$cha_dourl['spstatus'] = ;
/* 如果上传成功更新表单数据 */
$upda = $exam_listsDB->where(array('id' => $id))->save($cha_dourl);
if ($upda) {
$redata = array(
'code' => , 'info' => $info, 'files' => $_FILES, 'id' => $id, 'p_id' => $p_id, 'upda' => $upda,
);
} else {
$redata = array(
'code' => , 'info' => $info, 'files' => $_FILES, 'id' => $id, 'p_id' => $p_id, 'upda' => $upda,
);
}
}
$this->ajaxReturn($redata);
}

很方便的后台ajax上传文件的更多相关文章

  1. 闲话ajax,例ajax轮询,ajax上传文件[开发篇]

    引语:ajax这门技术早已见怪不怪了,我本人也只是就自己真实的经验去总结一些不足道的话.供不是特别了解的朋友参考参考! 本来早就想写一篇关于ajax的文章的,但是前段时间一直很忙,就搁置了,趁着元旦放 ...

  2. atitit.ajax上传文件的实现原理 与设计

    atitit.ajax上传文件的实现原理 与设计 1. 上传文件的三大难题 1 1.1. 本地预览 1 1.2. 无刷新 1 1.3. 进度显示 1 2.  传统的html4  + ajax 是无法直 ...

  3. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  4. 伪ajax上传文件

    伪ajax上传文件   最近在折腾伪ajax异步上传文件. 网上搜索了一下,发现大部分方法的input file控件都局限于form中,如果是在form外的呢? 必须动态生成一个临时form和临时if ...

  5. Ajax 上传文件(input file FormData)

    FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据.其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用. jQuery Aj ...

  6. django系列6--Ajax05 请求头ContentType, 使用Ajax上传文件

    一.请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有三种: 1.application/x-www-form-urlencoded 这应该是最常见的 POST ...

  7. Ajax上传文件/照片时报错TypeError :Illegal invocation

    问题 Ajax上传文件/照片时报错TypeError :Illegal invocation 解决 网上搜索问题,错误原因可能有以下几个,依次检查: 请求类型有误,如post请求,但在后台设置的是ge ...

  8. django上课笔记7-jQuery Ajax 和 原生Ajax-伪造的Ajax-三种Ajax上传文件方法-JSONP和CORS跨域资源共享

    一.jQuery Ajax 和 原生Ajax from django.conf.urls import url from django.contrib import admin from app01 ...

  9. jS Ajax 上传文件报错"Uncaught TypeError: Illegal invocation"

    使用jquery ajax异步提交文件的时候报Uncaught TypeError :Illegal invocation错误,报错信息如图: 错误原因: jQuery Ajax 上传文件处理方式,使 ...

随机推荐

  1. 《Ansible权威指南》笔记(4)——Playbook

    七.Playbook1.语法特性如下:(1)"---"首行顶格开始(2)#号注释(3)缩进统一,不同的缩进代表不同的级别,缩进要对齐,空格和tab不能混用(4)区别大小写,键值对k ...

  2. 基于面向对象的图片轮播(js原生代码)

    无论你想走多远,你都需要不断地走下去.前端最精华的便是原生的js,这也是我们前端工程师的技术分层的重要指标,也提现这你的代码能力,开发的水平.废话不多说,进入今天的主要分享————基于面向对象思想的图 ...

  3. 安卓虚拟机adb shell sqlite3数据库

    adb shell 连接: //http://www.cnblogs.com/xiaobo-Linux/ Android把数据都存放在data/data目录下. 我们使用cd命令转到data/data ...

  4. POJ 2125 Destroying the Graph 二分图最小点权覆盖

    Destroying The Graph Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8198   Accepted: 2 ...

  5. AutoMapper的使用

    1.AutoMapper简单介绍 官网:http://automapper.org/ 源码:https://github.com/AutoMapper/AutoMapper NUGET安装: PM&g ...

  6. 编写轻量ajax组件01-对比webform平台上的各种实现方式

    前言 Asp.net WebForm 和 Asp.net MVC(简称MVC) 都是基于Asp.net的web开发框架,两者有很大的区别,其中一个就是MVC更加注重http本质,而WebForm试图屏 ...

  7. NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析

    哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...

  8. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  9. 系统级性能分析工具perf的介绍与使用

    测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...

  10. Android 提醒公共方法 Notification

    SimpAndroidFarme是近期脑子突然发热想做的android快速开发的框架,目标是模块化 常用的控件,方便新手学习和使用.也欢迎老鸟来一起充实项目:项目地址 今天的目标是做一个公共的提醒方法 ...