控制器:
$reinfo = "fail"; $filename=""; //重要說明: //使用uploadify 上傳時,每次這個sessionID都會改變, //改變之后出現的不利影響就是無法再獲取sessionID線下的其它session值,比如 Yii::app()->session['ik'] 值就變了。 //但是這個地方值不能變,仍要用 Yii::app()->session['ik'] 的值來作驗證, //因此一定要使用這句 session_id($pse); 作用是將sessionID改回來,與原來的sessionID一致,以便順利獲取值 //有了該值之后,原來的 sessionID 和 上傳之后的 sessionID 是一致的。 //echo Yii::app()->session->sessionID; 這是Yii獲取sessionID的方法 //2014-10-14 13:04 W.one $pse=Yii::app()->request->getParam('phpSESSION'); session_id($pse); /* * 如果不使用上句的話,Yii::app()->session['ik']==$who 是不可能相等的,因為sessionID變了 */ $who=(int)Yii::app()->request->getParam('who'); $sjm=Yii::app()->request->getParam('sjm'); $zlsjm = Yii::app()->request->getParam("zlsjm"); //$xceikey=(int)Yii::app()->request->getParam('xceikey');//獲取的相冊ikey,默認為請選擇,值為空,一定要選擇一個值 if ($who==Yii::app()->session['ik']){ $sjz=time(); $tempFile = $_FILES['Filedata']; $checkType= pathinfo($tempFile["name"],PATHINFO_EXTENSION); if ($checkType != "notimg"){ $targetPath = $_SERVER['DOCUMENT_ROOT'] . '/oa/upload/file/'; $scfile= date("Y").date("m").date("d").date("His")."_".$who."_".md5(microtime()).".".$checkType; $targetFile = str_replace('//','/',$targetPath) . $scfile; if (move_uploaded_file($tempFile['tmp_name'],$targetFile)){ $relativeurl="./upload/file/".$scfile; //$relativeurl=$tempFile["name"]; $zlfj = new Zlfj(); $zlfj->fj_zlsjm = $zlsjm; $zlfj->fj_uikey = Yii::app()->session["ik"]; $zlfj->fj_path = "./upload/file/".$scfile; $zlfj->fj_time = time(); $zlfj->fj_name = $tempFile["name"]; if($zlfj->validate()&&$zlfj->save()){ $reinfo = $relativeurl; $filename=$tempFile["name"]; }else{ @unlink($targetFile); } } } } echo CJSON::encode(array("info"=>"$reinfo","name"=>$filename));
view:
<script type="text/javascript"> $(function() { ii=0; $('#xceimgs2').uploadify({ 'formData' : { 'sjm' : '<?php echo md5(time());?>', 'who' : "<?php echo Yii::app()->session['ik'];?>", 'PHPSESSION':'<?php echo Yii::app()->session->sessionID;?>', }, 'swf' : '<?php echo JS;?>uploadify.swf?var=' + (new Date()).getTime(), 'uploader' : './index.php?r=site/uploadify1', //將默認的SELECT FILES改成中文'選擇文件' 'buttonText':'上傳附件', //瀏覽按鈕的寬度 'width':'120', //瀏覽按鈕的高度 'height':'26', //在瀏覽窗口底部的文件類型下拉菜單中顯示的文本 'fileTypeDesc':'支持的格式:', //允許上傳的文件后綴 'fileTypeExts':'*.doc', //上傳文件的大小限制 'fileSizeLimit':'50MB', //上傳數量 'queueSizeLimit' : 50, //設置是否可以一次上傳多個文件 'multi':true,
//當用戶選定文件,點確定后觸發,每個文件將會觸發一次 'onSelect':function(file){ },
'onUploadStart' : function(file) { $("#xceimgs2").uploadify("settings", "formData",{'zlsjm':$("#juece_zlsjm").val(),'zlikey':$("#juece_zlikey").val()}); }, 'onUploadSuccess':function(file, data, response){ json=eval("("+data+")"); //alert(json["name"]);return false; //不等于fail表明上傳成功 if(json.info!="fail"){ $("#jueceim"+ii).attr("src","<?php echo IMG."doc.jpg";?>"); $("#jueceb"+ii).text(json.name); $("#juecedele"+ii).attr("src","<?php echo IMG."delete2.png";?>"); $("#juecedele"+ii).attr("value",json.info); ii++; } }, //返回一個錯誤,選擇文件的時候觸發 'onSelectError':function(file, errorCode, errorMsg){ switch(errorCode) { case -100: alert("上傳的文件數量已經超出系統限制的 50 個文件!"); break; case -110: alert("文件 ["+file.name+"] 大小超出系統限制的"+$('#xceimgs2').uploadify('settings','fileSizeLimit')+"大??!"); break; case -120: alert("文件 ["+file.name+"] 大小異常!"); break; case -130: alert("文件 ["+file.name+"] 類型不正確!"); break; default: } } }); }); </script>
新聞熱點
疑難解答