ThinkPHP 3.2.3集成uploadify上传控件
uploadify控件有一个坑爹的问题,就是文件上传时会session丢失,官方解释http://www.uploadify.com/documentation/uploadify/using-sessions-with-uploadify/,通过formData属性解决。
前端代码
<input type="file" name="file_upload" id="file_upload" />
$('#file_upload').uploadify({
'auto' : false,//关闭自动上传
'removeTimeout' : 1,//文件队列上传完成1秒后删除
'swf' : basePath+'resource/js/source/uploadify/uploadify.swf',
'uploader' : basePath+'home/file/fileUploadOper.html',
'method' : 'post',//方法,服务端可以用$_POST数组获取数据
'buttonText' : '选择图片',//设置按钮文本
'multi' : true,//允许同时上传多张图片
'uploadLimit' : 10,//一次最多只允许上传10张图片
'fileTypeDesc' : 'Image Files',//只允许上传图像
'fileTypeExts' : '*.gif; *.jpg; *.png; *.jpeg',//限制允许上传的图片后缀
'fileSizeLimit' : '10MB',//限制上传的图片不得超过200KB
'onUploadSuccess' : function(file, data, response){
data = data.substring(0,data.indexOf("}")+1);
var obj = JSON.parse(data);
if(obj.type){
alertWindow("info","信息",obj.msg);
}else{
alertWindow("error","错误",obj.msg);
}
},
'onQueueComplete' : function(queueData) {}
});
$('#upload').click(function(){
var formData = {};
formData['did'] = document.getElementById('did').value;
formData['session'] = $('#session_id').val();
//$('#file_upload').uploadify('settings', 'formData', {'did':document.getElementById('did').value});
$('#file_upload').uploadify('settings', 'formData', formData);
$('#file_upload').uploadify('upload','*');
});
$('#cancel').click(function(){
$('#file_upload').uploadify('cancel','*');
});
通过formData将sessionid传递到后台
后端代码
//接受动态传值
$did = $_POST['did'];
session_id($_POST['session']);
session_start();
//获取目录
$dir = M('Dir');
$dirs = $dir->where("did=$did")->select();
if(count($dirs)>0){
$d = $dirs[0];
$realpath = $d['realpath'];
//得到上传的临时文件流
$tempFile = $_FILES['Filedata']['tmp_name'];
//允许的文件后缀
//$fileTypes = array('jpg','jpeg','gif','png');
//得到文件原名
$fileName = $_FILES["Filedata"]["name"];
$names = explode('.',$fileName);
$newFlieName = create_guid().'.'.$names[1];
if(is_dir($realpath)){
if (move_uploaded_file($tempFile, $realpath.'/'.$newFlieName)){
//$user = session('user');
$user = $_SESSION['user'];
//生成数据库数据
$file = M('File');
$file->filename = $fileName;
$file->realpath = $realpath.'/'.$newFlieName;
$file->realname = $newFlieName;
$file->path = $d['dpath'].'/'.$newFlieName;
$file->did = $did;
$file->createuid = $user['uid'];
$file->updateuid = $user['uid'];
$file->createtime = time();
$file->updatetime = $file->createtime;
if($file->add()){
$result = '{"type":true,"msg":"'.$fileName.'上传成功。"}';
}else{
$result = '{"type":false,"msg":"'.$fileName.'上传失败,生成数据库记录时失败。"}';
}
}else{
$result = '{"type":false,"msg":"'.$fileName.'上传失败。"}';
}
}else{
$result = '{"type":false,"msg":"文档目录不存在,上传失败。"}';
}
}else{
$result = '{"type":false,"msg":"文档目录不存在,上传失败。"}';
}
echo $result;
使用session_id(),session_start()方法,后面通过$_FILES获取文件流进行文件写入操作。
ThinkPHP 3.2.3集成uploadify上传控件的更多相关文章
- 文件上传~Uploadify上传控件~续(多文件上传)
对于Uploadify文件上传之前已经讲过一次(文件上传~Uploadify上传控件),只不过没有涉及到多文件的上传,这回主要说一下多个文件的上传,首先,我们要清楚一个概念,多文件上传前端Upload ...
- uploadify上传控件中文的乱码解决办法
uploadify上传控件中文的乱码解决办法 网站用的gb2312的编码,用uploadify上传控件上传中文时在IE能部分成功,FF,Chrome则完全失败,查找了一天原因,结果发现是页面编码问题, ...
- 使用uploadify上传控件无法进入后台问题分析
分别在.net mvc 和java struts2中使用到 uploadify上传 文件,遇到同样的问题,选中文件上传后,文件无法上传,打上断点后发现没有进入后台. 逐步断点发现 项目共同点是加入了 ...
- 解决Uploadify上传控件加载导致的GET 404 Not Found问题
今天在项目发用到Uploadify上传, 发现在打开页面时会有一多余的请求,由于路由没有设置这个,导致404错误,能搜索查到以下解决的方法 <Uploadify v3 bug. Unecessa ...
- 文件上传~Uploadify上传控件
对于文件上传来说,有很多种实现方式,如传统的表单方式,现在流行的flash方式,甚至还有纯JS方式,之所以有这些方式来实现文件上传,我想主要原因是因为,传统的上传对于大文件支持不够,因为它是单线程同步 ...
- uploadify上传控件使用
uploadify是JQuery的一个上传插件,实现的效果非常不错,并且带进度显示,我将给大家演示如何使用uploadify进行图片上传, 1.点我下载http://www.uploadify.com ...
- ASP.NET jquery.uploadify上传控件中文乱码解决办法(转)
原文地址:http://blog.csdn.net/ningxi_/article/details/6234725 在一般处理程序上加上这几句话: context.Response.ContentTy ...
- jquery文件上传控件 Uploadify
(转自 http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html) 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同 ...
- 使用Uploadify(UploadiFive)多文件上传控件遇到的坑
最近项目中需要实现多文件上传功能,于是结合需求最终选择了Uploadify这一款控件来实现.相比其他控件,Uploadify具有简洁的界面,功能API基本可以解决大多数需求,又是基于jquery的,配 ...
随机推荐
- String课后作业
请查看String.equals()方法的实现代码,注意学习其实现方法. public class StringEquals { @param args the command line argume ...
- 为speedphp最新版添加 仿Yii 的简易版 数据验证 支持不同场景,自定义回调
给个意见或建议吧 扩展一个Model基类 <?php class BaseModel extends Model{ use ValidationRules; public function ru ...
- 常用dos命令 如查询端口号是否被占用
①查询端口号是否被占用掉 在windows命令行窗口下执行:运行--cmdC:\>netstat -aon|findstr "8080" TCP 127.0.0.1:80 0 ...
- find_first_of()和 find_last_of() 【获取路径、文件名】
find_first_of()和 find_last_of() [获取路径.文件名](2011-06-11 12:44:46)转载▼标签: 杂谈 分类: c string 类提供字符串处理函数,利用 ...
- GSM模块fibocom G510使用记录
一、背景:最近在做一个单定位的产品,对低功耗要求较高,选用了G510系列的模块。现在仅做了三块样板,先熟悉下。 二、优点:1.功耗低,和西门子的BGS2差不多;2.注册网络指令简单;3.其他有待发现 ...
- Android SQLiteOpenHelper(一)
SQLiteOpenHelper api解释: A helper class to manage database creation and version management. You creat ...
- C语言之共用体
最近在复习C语言,特再次记录: 有时需要将几种不同类型的变量存放到同一段内存单元中.如一个int.float.char放在同一个地址开始的内存单元中.,也就是使用覆盖技术,几个变量相互覆盖,称之为共用 ...
- Hubilder快捷键
/* tips.txt的内容可以在HBuilder启动封面中显示.你可以自定义一个有趣的启动tips,增加[user]开头的文本内容即可.比如[user]我要减肥! */ 你按照Hello HBui ...
- Gym 100818G (模拟退火)
题目大意 给一张n个点的无向图,要求给每个点染色0或1,使得每个点的相邻相同颜色点的数量小于等于其度数的一半. 解题分析 没想到什么好的算法,就随机乱搞了. 若某个状态时,一个点的度数为cnt,相邻相 ...
- jq 一些小方法
js 控制a标签的onclick方法 document.getElementById("a3").onclick = ""; window.document.g ...