yii2 在路径在数据库中的情况下输出存储在文件夹中的图像和视频

Output an image and videos stored in a folder while the path is in the database in yii2

我正在创建一个法庭管理系统,人们应该能够通过该系统查看与特定案件有关的图像和视频

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

关系

证据模型代码:

 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']);
}

上传效果很好,证据我用案号1号保存了。证据模型中的路径是我保存图片上传到的路径。

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

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

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

}

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

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

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 设置正确,一个简单的 link 构建具有相同的规则

如果您有大量与案件证据相关的证据,则该证据将在具有多个实例的对象或具有多个实例的相关详细信息中提供。要处理这种情况就足够了,您可以在这些实例(子模型或子对象)上进行 foreach 循环,并且每个实例都按照答案第一部分中的建议生成回声。