chenkelang90120 2012-06-08 14:27:34 4287次浏览 7条回复 0 0 0

我想实现选择图片之后就能预览图片:

[attach]754[/attach]

现在我的情况是这样的:

[attach]755[/attach]

想问下我选择图片后怎么能预览图片

模型:

array('adImg', 'file', 'types'=>'jpg, gif, png' , 'maxSize'=>1024 * 1024 * 1,'tooLarge'=>'图片最大不超过1MB,请重新上传!',)

控制器:

$model->attributes=$_POST['AdMemberinfo'];
$model->adImg=CUploadedFile::getInstance($model,'adImg');
 		
if($model->save())
    $model->adImg->saveAs(Yii::app()->basePath.'/../images/shop/'.$model->adImg);
    $this->redirect(array('view','id'=>$model->id));
}

视图:

<div class=”row”>
    <?php echo $form->labelEx($model,'adImg'); ?>
    <?php echo CHtml::activeFileField($model,'adImg'); ?>
    <?php echo $form->error($model,'adImg'); ?>
</div>
<?php //if(!empty($model->adImg)):?>
<div class=”row”>
    <?php echo CHtml::label('图片预览','') ?>
    <?php echo '<img src="images/shop/'.$model->adImg.'" />'; ?>
</div>
<?php //endif;?>
  • 回复于 2012-06-08 14:58 举报

    activeFileField 不能自动上传图片吧。。 不上传那怎么能预览。。
    所以建议你使用Swfupload这个组件。或者你把那个选择图片放到一个iframe里面去弄成ajax提交。

  • 回复于 2012-06-08 15:35 举报

    用个扩展或插件吧

  • 回复于 2012-06-08 23:45 举报

    同意二楼

  • 回复于 2012-08-22 19:39 举报

    js就搞定了。加个onchange事件就OK ,获取你图片的绝对路径

  • 回复于 2012-08-22 19:42 举报

    [attach]860[/attach]

  • 回复于 2012-08-23 11:24 举报

    各位好,我有点糊涂了:
    $model->adImg->saveAs(Yii::app()->basePath.'/../images/shop/'.$model->adImg)
    这句话难道不是保存到服务器上去了吗?Yii::app()->basePath 这是服务器的一个路径啊,这个不能保存到服务器上,那这句话是干嘛的呢?
    请帮忙解答。

  • 回复于 2012-08-23 14:04 举报

    这一句确实没有上传文件,我看了下源码,差点误解了。

    public function saveAs($file,$deleteTempFile=true)
    {
        if($this->_error==UPLOAD_ERR_OK)
        {
            if($deleteTempFile)
                return move_uploaded_file($this->_tempName,$file);
            else if(is_uploaded_file($this->_tempName))
                return copy($this->_tempName, $file);
            else
                return false;
        }
        else
            return false;
    
您需要登录后才可以回复。登录 | 立即注册