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获取文件流进行文件写入操作。

最新文章

  1. phpcms 服务器安全认证错误
  2. Wireshark工具创建过滤器的方式
  3. loading.gif
  4. Spring 数据库配置用户名和密码加密
  5. “合规性”是考核IT运维的重要指标
  6. 三 GPU 并行编程的运算架构
  7. FMX架构图
  8. 软硬大比拼 硅胶、TPU和PC材质对比
  9. 敏感字符串加密处理(PHP实现)
  10. windbg工具安装配置及dump抓取
  11. mysql主从复制的异步复制与同步复制
  12. CCF系列之数位之和(201512-1)
  13. ORA-00904:标识符无效
  14. .NET和Java之争
  15. Sublime Keymap 设置
  16. UBUNTU14.0.4安装eclipse
  17. Envoy 代替nginx https://www.jianshu.com/p/0a1f67b42fdb
  18. MIT Molecular Biology 笔记2 DNA的突变和修复
  19. POJ3020 Antenna Placement
  20. LOJ2542 PKUWC2018随机游走(概率期望+容斥原理)

热门文章

  1. Java获取本机的IP与MAC地址
  2. html页面制作css基本设置
  3. Java借助Runtime调用外部程序阻塞的代码
  4. 【C#】第3章学习要点(二)自定义类和结构
  5. 2016041601 - linux上安装maven
  6. Java实现单向链表
  7. linux-kernel/CodingStyle
  8. NSArray 与 NSMutableArray 的排序
  9. 通过 ODBC 访问数据库获取数据集
  10. git命令记录
  11. ORM Basic
  12. Flask博客开发——登录验证码
  13. vue的父子组建之间的通信(-),基于props和$emit之间的传递
  14. #WEB安全基础 : HTML/CSS | 0x9美丽的饮料店
  15. 解决TensorFlow程序无限制占用GPU
  16. linux开发板出现Read-only file system的解决办法
  17. JavaScript-简介、ECMAScript5.0
  18. 大数据入门第二十五天——elasticsearch入门
  19. iOS:根据系统类型加载不同的xib
  20. java的两种冒泡算法