yii中的文件上传?

时间:2016-04-26 17:57:54

标签: php yii

我是yii的新手。我有一个项目,我必须向用户发送消息并上传1 MB的文件。它的所有基于数据库的无邮件功能都是用户。 我已经向用户发送了消息,并根据用户ID向他们显示了消息。一切正常但附件中我可以上传任何文件,如excel,image和pdf。如何用消息显示这个。请帮忙。

我的行动

public function actionCreateMessage()
{
    $model=new Message;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['File']))
    {
        $file=$model->filename=CUploadedFile::getInstance($model,'filename');
        if(empty($file)){
            $model->attributes=$_POST['Message'];
            $model->save();
        }
        else{
        $model->attributes=$_POST['Message'];
        $model->filename = CUploadedFile::getInstance($model, 'filename');
        if($model->save()){
            $simpan->saveAs(Yii::app()->basePath .
                '/../files/' . $model->filename.'');
            $this->redirect(array('view','id'=>$model->message_id));
        }
        }
    }

    $this->render('create',array(
        'model'=>$model,
    ));
}


viewmessage

<?php $this->widget('bootstrap.widgets.TbDetailView',array(
       'data'=>$model,
       'attributes'=>array(
                      'message_id',
                      'message_subject',
                      'message_body',
                       array(  
            'label'=>'attachment',
            'type'=>'raw',
            'value'=>CHtml::link(CHtml::encode($model->filename);

        ),
                              ),
 )); ?>

我希望文件名可链接,点击图片/ pdf / excel应该打开

1 个答案:

答案 0 :(得分:0)

首先,如果你刚刚开始使用Yii我强烈建议使用Yii2代替Yii1.x.您发布的代码是Yii 1.x,现在它的生命支持加上Yii2更加优雅。

但回到商界:

开箱即用,没有Yii特定的方式可以显示图像和Excel文件。有些(如果不是所有)浏览器都内置了对PDF的支持,因此在大多数浏览器中都能正常显示。

但是,如果您想要一个允许用户点击链接并打开文档的一体化解决方案,您可能需要尝试以下几点:

  1. 将Excel文档上传到Google文档帐户,然后按照以下说明将其嵌入您的页面:https://support.google.com/docs/answer/143345?hl=en&rd=1

  2. 对于图像,您只需创建一个标记即可显示。

  3. 对于PDF,你可以尝试这样的事情:

  4. <div> <object data="test.pdf" type="application/pdf" width="300" height="200"> alt : <a href="test.pdf">test.pdf</a> </object> </div>