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上传控件的更多相关文章

  1. 文件上传~Uploadify上传控件~续(多文件上传)

    对于Uploadify文件上传之前已经讲过一次(文件上传~Uploadify上传控件),只不过没有涉及到多文件的上传,这回主要说一下多个文件的上传,首先,我们要清楚一个概念,多文件上传前端Upload ...

  2. uploadify上传控件中文的乱码解决办法

    uploadify上传控件中文的乱码解决办法 网站用的gb2312的编码,用uploadify上传控件上传中文时在IE能部分成功,FF,Chrome则完全失败,查找了一天原因,结果发现是页面编码问题, ...

  3. 使用uploadify上传控件无法进入后台问题分析

    分别在.net mvc 和java struts2中使用到 uploadify上传 文件,遇到同样的问题,选中文件上传后,文件无法上传,打上断点后发现没有进入后台. 逐步断点发现 项目共同点是加入了 ...

  4. 解决Uploadify上传控件加载导致的GET 404 Not Found问题

    今天在项目发用到Uploadify上传, 发现在打开页面时会有一多余的请求,由于路由没有设置这个,导致404错误,能搜索查到以下解决的方法 <Uploadify v3 bug. Unecessa ...

  5. 文件上传~Uploadify上传控件

    对于文件上传来说,有很多种实现方式,如传统的表单方式,现在流行的flash方式,甚至还有纯JS方式,之所以有这些方式来实现文件上传,我想主要原因是因为,传统的上传对于大文件支持不够,因为它是单线程同步 ...

  6. uploadify上传控件使用

    uploadify是JQuery的一个上传插件,实现的效果非常不错,并且带进度显示,我将给大家演示如何使用uploadify进行图片上传, 1.点我下载http://www.uploadify.com ...

  7. ASP.NET jquery.uploadify上传控件中文乱码解决办法(转)

    原文地址:http://blog.csdn.net/ningxi_/article/details/6234725 在一般处理程序上加上这几句话: context.Response.ContentTy ...

  8. jquery文件上传控件 Uploadify

    (转自 http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html) 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同 ...

  9. 使用Uploadify(UploadiFive)多文件上传控件遇到的坑

    最近项目中需要实现多文件上传功能,于是结合需求最终选择了Uploadify这一款控件来实现.相比其他控件,Uploadify具有简洁的界面,功能API基本可以解决大多数需求,又是基于jquery的,配 ...

随机推荐

  1. pthread_mutex_lock

    pthread_mutex_lock pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mut ...

  2. MySQL数据库忘记root密码解决办法

    MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图:

  3. Python开发入门与实战6-表单

    6. 表单 从简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的重要交互手段.本章介绍如何用Django如何对用户通过表单提交的数据进行访问. ...

  4. jQuery侧边栏固定

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 个人开发者做一款Android App需要知道的事情

    个人开发者做一款Android App需要知道的事情 在大学时, 自己是学计算机专业的,而且还和老师一起做过一年半的项目. 有时候是不是有这样的想法,做一个自己的网站.但一直未付诸行动.2012年时, ...

  6. Asp.net中Json的序列化和反序列化(二)

     三.JSON序列化和反序列化日期时间的处理 JSON格式不直接支持日期和时间.DateTime值值显示为“/Date(700000+0500)/”形式的JSON字符串,其中第一个数字(在提供的示例中 ...

  7. C和Objective-C的语法概要

    C语言的三个基本要素是数据.语句和函数,支持面向过程编程(POP). C语言有数据,数据分为常量和变量,数据的类型分为字符类型和数字类型,数字类型分为整数类型和浮点数类型,复合数据的类型有数组和结构, ...

  8. java中set的交集、差集、并集的简单实现

    实现思路很简单,直接上代码: package test; import java.util.HashSet; import java.util.Set; public class Test { pub ...

  9. 根据滑动显隐状态栏的iOS实现

    之前很多兄弟问如何实现类似于淘宝客户端搜索列表那种动态显隐的效果,这几天刚好有时间,就实现了几个例子搞一下,其实原理很简单,也参考了github上一位兄弟的实现.不多说,上代码 @interface ...

  10. Android学习二:Http操作

    1.初步认识HTTP HTTP(Hypertext Transfer Protocol超文本传输协议)是网络应用层协议,建立在TCP/IP基础上,HTTP使用可靠的TCP连接,默认端口是80. 较常用 ...