当路径在yii2中的数据库中时,输出存储在文件夹中的图像和视频

时间:2015-11-27 10:12:17

标签: php yii2 yii-extensions yii2-advanced-app

建立一个法庭管理系统,让一个人能够查看与某个案件有关的图像和视频

我有两个相关的表,即案例和证据表

关系

证据模型代码:

 public function getCaseRef()
{
    return $this->hasOne(Cases::className(), ['ref_no' => 'case_ref']);
}

public function rules()
{
    return [
        [['case_ref', 'saved_by', 'saved_on', 'evidence_type'], 'required'],
        [['saved_on'], 'safe'],
        [['path'], 'safe'],
        [['case_ref', 'saved_by'], 'string', 'max' => 100],
        [['evidence_type'], 'string', 'max' => 50],
        [['path'], 'file']
    ];
}

案例模型代码:

  public function getEvidences()
{
    return $this->hasMany(Evidence::className(), ['case_ref' => 'ref_no']);
}

上传效果很好,我用案例参考号保存证据。证据模型中的路径是我保存图像上传到的位置的路径。

在案例控制器的动作视图中

public function actionView($id)
{
 $evidence = new Evidence();

 return $this->render('view', [
      'model' => $this->findModel($id),
       'id'=>$id,'evidence'=>$evidence,
       ]);

}

如何放置我的视图模型,以便显示存储在文件夹中的images / videos / pdf文件(对应于在使用路径点击期间传递的id即$ id存储在数据库证据表中

1 个答案:

答案 0 :(得分:1)

如果文件夹在var myFolder中,并且模型中var myFilename中的文件名,您可以轻松地使用它来查看图像和视频,将proer值添加到相关的attribut

echo "<img src='". $model->myFolder . $model->myFilename . "' >";

echo " <video width='320' height='240' controls>
 <source src='" . $model->myFolder . $model->myFilename  ."'type='video/mp4'>
 Your browser does not support the video tag.
</video> "

对于pdf,您应该使用适当的扩展名,如mpdf,或者如果您正确设置了mime,则使用相同的规则构建简单的链接

如果您有足够的证据与案件证据相关,则该证据将在具有许多实例的对象中提供,或者在具有许多实例的相关细节中提供。要处理这种情况就足以让你在这些istances(子模型或子对象)上进行foreach循环,并且每个都会产生回声,如答案的第一部分所示。