我试图从我的应用程序的后端显示图像
<?php foreach ($img as $key=>$row): ?>
<div class="products_inside_wrapper intro_wrapper">
<div class="classes_inside_item bordered_wht_border">
<?php
foreach (explode(';',rtrim($row['images'],';')) as $key_img => $value_img)
{
?>
<?php echo Html::img('@backend/web'.'/'.$value_img);?>
<?php
}
?>
</div>
</div>
<?php endforeach; ?>
尝试使用上面的代码显示所有图片,但在打开Google Chrome检查元素时收到错误Not allowed to load local resource
答案 0 :(得分:2)
我认为您使用的是本地网址,而不是使用此
<?php echo Html::img('@backend/web'.'/'.$value_img);?>
尝试使用它
<?= Html::img(Yii::getAlias('@web').'/images/'.$value_img]);?>
答案 1 :(得分:2)
由于stig-js回答您无法直接加载本地保存的图像,如果您真的对从本地路径加载资源感兴趣,可以使用fopen
打开图像作为二进制文件并回显内容它具有适当的标题输出。通常,您可以像这样在模型中添加方法:
public function getImage($imageName)
{
$imagePath = '@backend/web' . '/' . $imageName;
$fileInfo = finfo_open(FILEINFO_MIME_TYPE);
$contentType = finfo_file($fileInfo, $imagePath);
finfo_close($fileInfo);
$fp = fopen($imagePath, 'r');
header("Content-Type: " . $contentType);
header("Content-Length: " . filesize($imagePath));
ob_end_clean();
fpassthru($fp);
}
P.S:你也可以将这个答案的组合与在HTML上显示图像作为base64一起使用。见How to display Base64 images in HTML?
答案 2 :(得分:1)
图片必须可以通过网址访问,例如
yoursite.com/backend/imagedir/IMG'
如果 yoursite.com/backend 指向您的backend/web
文件夹。
后端别名指向本地路径,因此您需要自定义别名才能访问图像文件夹。
Yii2别名:http://www.yiiframework.com/doc-2.0/guide-concept-aliases.html