我读过这篇文章http://yiiframework.com/wiki/2 我一步一步地完成了一切。 但它不起作用! 这是我只是复制然后粘贴的模型:
class Item extends CActiveRecord
{
public $image;
// ... other attributes
public function rules()
{
return array(
array('image', 'file', 'types'=>'jpg, gif, png'),
);
}
}
我的观点与文章完全相同:
$form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'enableAjaxValidation' => false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)
);
// ...
echo $form->labelEx($model, 'image');
echo $form->fileField($model, 'image');
echo $form->error($model, 'image');
// ...
echo CHtml::submitButton('Submit');
$this->endWidget();
我的控制器是:
class ItemController extends CController
{
public function actionCreate()
{
$model=new Item;
if(isset($_POST['Item']))
{
$model->attributes=$_POST['Item'];
$model->image=CUploadedFile::getInstance($model,'image');
if($model->save())
{
$model->image->saveAs(dirname(__FILE__).'/a.txt');
// redirect to success page
}
}
$this->render('create', array('model'=>$model));
}
}
当我选择图像(jpg,png或其他)时,控制器没有看到我的文件,我的意思是isset($_FILES['Item'])
是假的...我知道它是假的,因为我用var_dump
数百次检查:
public function actionCreate()
{
$model=new Item;
var_dump(isset($_POST['Item']));
...
我也测试var_dump(isset($_FILES['Item']))
也是假的。
对于每种文件(普通txt文件除外)$_POST['Item']
)仍为空。
我使用firebug网络面板(Firefox和Chrome)检查了我的请求,并且请求包含了该文件。
我已经检查了这个问题,似乎问题相同,但答案并不有用,因为CUploadedFile::getInstance
和CUploadedFile::getInstanceByName
对我的案例也返回null
答案 0 :(得分:0)
在控制器更改和使用中如下:
class ItemController extends CController
{
public function actionCreate()
{
$model=new Item;
if(isset($_POST['Item']))
{
$model->attributes=$_POST['Item'];
$uploadedFile = CUploadedFile::getInstance($model,'image');
if($model->save())
{
if(!empty($uploadedFile)) // check if uploaded file is set or not
{
if($model->image == null || empty($model->image)){
$rnd = rand(0,9999);// generate random number between 0-9999
$fileName = "{$rnd}-{$uploadedFile}";
$model->image = $fileName;
}
$uploadedFile->saveAs(dirname(__FILE__)..'/images/'. $model->image);
// redirect to success page
}
}
}
$this->render('create', array('model'=>$model));
}
}
答案 1 :(得分:0)
问题与Yii Framework或我的PHP代码无关,因为我只是在两台不同的机器上测试相同的代码,并且工作得很好。 我在我自己的计算机上使用wamp,我猜这个问题与Apache或php配置有关。