控制器:
$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"><br> $(function() {<br> ii=0;<br> $('#xceimgs2').uploadify({<br> 'formData' : {<br> 'sjm' : '<?php echo md5(time());?>',<br> 'who' : "<?php echo Yii::app()->session['ik'];?>",<br> 'PHPSESSION':'<?php echo Yii::app()->session->sessionID;?>',<br> },<br> 'swf' : '<?php echo JS;?>uploadify.swf?var=' + (new Date()).getTime(),<br> 'uploader' : './index.php?r=site/uploadify1',<br> //将默认的SELECT FILES改成中文'选择文件'<br> 'buttonText':'上传附件',<br> //浏览按钮的宽度<br> 'width':'120',<br> //浏览按钮的高度<br> 'height':'26',<br> //在浏览窗口底部的文件类型下拉菜单中显示的文本<br> 'fileTypeDesc':'支持的格式:',<br> //允许上传的文件后缀<br> 'fileTypeExts':'*.doc',<br> //上传文件的大小限制<br> 'fileSizeLimit':'50MB',<br> //上传数量<br> 'queueSizeLimit' : 50,<br> //设置是否可以一次上传多个文件<br> 'multi':true,</script>
//当用户选定文件,点确定后触发,每个文件将会触发一次
'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","");
$("#jueceb"+ii).text(json.name);
$("#juecedele"+ii).attr("src","");
$("#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:
}
}
});
});
以上就介绍了Yii Uploadify批量上传,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。










