我想使用url在数据库中发送图像。但它发送的是空值。请指导我这个。我想制作一个用于上传图片的api
public function actionTest()
{
$model = new Users;
if(isset($_POST['Users']))
{
$model->image=$_POST['Users']['image'];
$model->image=CUploadedFile::getInstance($model,'image');
echo $model->image;
echo 'hello';
if(is_object($model->image)){
//mkdir(getcwd().'/images/users/' . $model->id."/");
$name = getcwd().'/images/' .$model->id."/".$model->image->getName();
$model->image->saveAs($name);
try{
$image = Yii::app()->image->load($name);
$image->resize(50, 50);
$image->save();
}
catch(Exception $ex ){
echo 'image has been saved successfully';
die;
}
}
}
}
答案 0 :(得分:1)
越简越好......
我认为您最好在表格中使用标准Yii fileField()
。
<?php $form=$this->beginWidget('CActiveForm', array(
'enableAjaxValidation'=>false,
'enableClientValidation'=>false,
'htmlOptions' => array(
'enctype' => 'multipart/form-data',
),
)); ?>
...
<?php echo $form->labelEx($model,'image'); ?>
<?php echo $form->fileField($model,'image',array('size'=>40,'maxlength'=>255)); ?>
<?php echo $form->error($model,'image'); ?>
<br><br>
<?php echo CHtml::submitButton( Yii::t('general','Create') ); ?>
<?php // show image if it already exists in file system
if ((getimagesize(Yii::app()->basePath. '/../img/foto/'. $model->article . '.jpg') !== false) ) : ?>
<?php echo CHtml::image(Yii::app()->baseUrl. '/img/foto/'. $model->article . '.jpg')?>
<?php endif; ?>
<?php $this->endWidget(); ?>
在html设置中注明'enctype' => 'multipart/form-data'
。这使它上传文件。
然后在控制器端应用文件catch和store
就模型方面而言,我建议密切关注this tutorial。
如果你试图做什么。 没有形式你会浪费时间发明自己的文章。