YII框架中图片上传逻辑判断的问题 [ 未指定版本 ]
写了一个yii上传功能,测试不成功,来请教下:
模型里面是这样写的:
public function rules()
{
return array(
array('image','file','types'=>'jpg,gif,png'),
);
}
actionCreate和actionUpdate控制器里面都是这样写的:
$model=new Message;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Message']))
{
$model->attributes=$_POST['Message'];
$file=CUploadedFile::getInstance($model,'image'); //获取表单名为filename的上传信息
$model->image=$filename; //数据库中要存放文件名
$model->image = $file;
if($model->image)
{
$newName = time().'.'.$model->image->extensionName;
$model->image = $newName;
}
if ($file != null) {
$file->saveAs(Yii::app()->basePath . '/../uplode_img/' . $newName); //图片上传路径
}
if($model->save())
$this->redirect(array('view','id'=>$model->main_id));
}
视图里面这样写的:
<div class="row">
<?php echo $form->labelEx($model,'image'); ?>
<?php echo CHtml::activeFileField($model,'image'); ?>
<?php echo $form->error($model,'image'); ?>
</div>
想请教下,现在新增没有问题,不过在点击修改的时候,如果用户已经提交过图片,那就使用 用户之前提交的,除非用户更换图片,初学YII还不熟悉,请各位前辈帮忙看看了谢了
我update修改成这样了:
$model=$this->loadModel($id);
$image = $model->image;//变量
if(isset($_POST['Message']))
{
$model->attributes=$_POST['Message'];
$file=CUploadedFile::getInstance($model,'image'); //获取表单名为filename的上传信息
$model->image=$filename; //数据库中要存放文件名
$model->image = $file;
if($model->image)
{
$newName = time().'.'.$model->image->extensionName;
$model->image = $newName;
$file->saveAs(Yii::app()->basePath . '/../uplode_img/' . $newName);
}
else
{
$newName = $image;
$file->saveAs(Yii::app()->basePath . '/../uplode_img/' . $newName);
}
if($model->save())
$this->redirect(array('view','id'=>$model->main_id));
}
不过这样的话$file就是空值,saveAs()会报错。
共 1 个回答
-
http://hi.baidu.com/ttyangz/item/cd50833c940044c21b9696fc 参考一下,顺便看看yii的wiki.你
if ($uploadedFile != null) { //不空或者不为默认的就为原来名称
//这里保存图片名称到数据库image字段
if (!empty($fileName))
$model->image = $fileName;要用empty函数做一下判断,是否传上来了图片或者名字是否为空.上传个空的当然会出错.
共 2 条回复zhubangrui 回复于 2015-07-29 17:36 回复能告诉我一下您 是如何解决的吗?我也遇到这个问题了。谢谢
leo007ok
最后登录:2015-01-16
在线时长:11小时12分
- 粉丝1
- 金钱0
- 威望0
- 积分110