CUploadedFile多文件上传,各种误导…… [ 新手入门 ]
知道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)).' ';//这种也不行
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();同理
具体还有不明白的请留言,大侠绕道……
共 3 条回复
-
这里也有一个:
http://www.yiiframework.com/wiki/301/multiple-file-upload-handler
CMultiFileUpload也是用的CUploadedFile,他是一个widget。
guzuomuse
最后登录:2013-05-27
在线时长:0小时0分
- 粉丝0
- 金钱220
- 威望0
- 积分220