guzuomuse 2012-06-15 01:37:16 5699次浏览 3条回复 2 0 0

知道Yii的例子少,也知道管理员群主等领导同志们都很忙,但是我觉得如果要给我们新兵蛋子,做例子做教程,要么就把一个原理做透,要么就一点也别做了。 例子在于精不在于多,何况也不多……否则我们会迷路,还要再费好大劲再绕回来,吐槽一下太纠结了。因为我看了CUploadedFile的例子,只看到了简单一个单文件的上传的情况,而多文件上传的提都没提。 而论坛的不少朋友都在问如何多文件上传,你可以看一下几乎没有说一个可以用CUploadedFile,提都没提,大部分直接说用CMultiFileUpload这个,难道CUploadedFile这个就不能实现多文件上传吗?更有甚者直接说CUploadedFile是单文件上传,这你妹……新人就怕打不好基础,就怕被误导,如果咱们不了解,可以顶一下,研究一下,但别人云亦云的说自己都不确定的事,并告诉别人这是答案!我去……

我确定CUploadedFile完全可以实现多文件上传, 方法:view视图代码:

for($i=0;$i<3;$i++){
    //echo $form->fileField($model,'xiangguan_tupian[]').'<br/>';//这种方法不行
    //echo CHtml::activeFileField($model,'xiangguan_tupian[]');//这种也不行
    //echo CHtml::fileField('xiangguan_tupian[]','',array('id'=>'xiangguan_tupian'.$i)).'&nbsp';//这种也不行
    echo CHtml::activeFileField($model,'xiangguan_tupian[]',array('id'=>'xiangguan_tupian'.$i));
}
?>

controller控制器端:

$model=new Info;
// echo '<hr><br>';
$obj_array=CUploadedFIle::getInstances($model,'xiangguan_tupian');//注意这里不是getInstance而是getInstances多了个s,这样得到的是一个包含CUploadedFile对象的数组
//print_r($obj_array);
foreach($obj_array as $k=>$v){
    $v->saveAs(Yii::app()->basePath.'/'.$k.'_test.'.$v->getExtensionName());
}

多文件上传处理完毕。

要点:CUploadedFile::getInstance返回的是一个CUploadedFile对象,//CUploadeFile::getInstanceByName();同理 而CUploadedFile::getInstances返回的是一个值为CUploadedFile对象的数组//CUploadedFile::getInstancesByName();同理

具体还有不明白的请留言,大侠绕道……

您需要登录后才可以回复。登录 | 立即注册