我是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应该打开
答案 0 :(得分:0)
首先,如果你刚刚开始使用Yii我强烈建议使用Yii2代替Yii1.x.您发布的代码是Yii 1.x,现在它的生命支持加上Yii2更加优雅。
但回到商界:
开箱即用,没有Yii特定的方式可以显示图像和Excel文件。有些(如果不是所有)浏览器都内置了对PDF的支持,因此在大多数浏览器中都能正常显示。
但是,如果您想要一个允许用户点击链接并打开文档的一体化解决方案,您可能需要尝试以下几点:
将Excel文档上传到Google文档帐户,然后按照以下说明将其嵌入您的页面:https://support.google.com/docs/answer/143345?hl=en&rd=1
对于图像,您只需创建一个标记即可显示。
对于PDF,你可以尝试这样的事情:
<div>
<object data="test.pdf" type="application/pdf" width="300" height="200">
alt : <a href="test.pdf">test.pdf</a>
</object>
</div>