我无法上传图片,因为表单的 enctype 是application/x-www-form-urlencoded
. 我使用这段代码:
$form=$this->beginWidget('CActiveForm', array(
'htmlOptions' => array('enctype' => 'multipart/form-data'),
));
对于少数文件输入:
$i = 0;
foreach ($model->scans as $scan) { ?>
<fieldset>
...
<dd><?php echo $form->fileField($scan,'file_name', array('size'=>'10', 'name'=>get_class($scan).'['.$i.'][file_name]')); ?></dd>
...
</fieldset>
<?php $i++;
} ?>
选择一个文件并提交后,我在 Firebug 中看到了 Post 数据:
enctype - "application/x-www-form-urlencoded"
和空的 file_name 参数。
$_FILES
是空的,所以我无法获取文件。
那么,为什么不'htmlOptions' => array('enctype' => 'multipart/form-data')
工作?
更新: 生成表单的 Html 源是正确的:
<form id="yw0" method="post" action="/office/index.php?r=project/profileCreate" enctype="multipart/form-data">
<fieldset>
...
<dd>
<input id="ytProfileScan_0_file_name" type="hidden" name="ProfileScan[0][file_name]" value="">
<input id="ProfileScan_0_file_name" type="file" name="ProfileScan[0][file_name]" size="10">
</dd>
...
</fieldset>