JKLM
JKLM

Reputation: 1520

Yii2: Error Not allowed to load local resource

Im trying to display images from backend of my app

<?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; ?>

Tried with above code to display all images, but getting error Not allowed to load local resource when I open Google Chrome Inspect Element

Upvotes: 0

Views: 2499

Answers (3)

meysam
meysam

Reputation: 1794

As stig-js answered you can't load local saved image directly, If you're really interested into loading resources from a local path, you can open image as a binary file with fopen and echo the content of it with a proper header to output. In general way, you can add a method to your model like this:

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: Also you can use combination of this answer with showing image as base64 on HTML. See How to display Base64 images in HTML?

Upvotes: 1

user5201742
user5201742

Reputation:

Images must be accesible by an url, like

yoursite.com/backend/imagedir/IMG'

If yoursite.com/backend points to your backend/web folder.

Backend alias points to your local path, so you need a custom alias to reach image folders.

Yii2 aliases: http://www.yiiframework.com/doc-2.0/guide-concept-aliases.html

Upvotes: 1

Midhun
Midhun

Reputation: 3988

i think you are using a local url instead of using this

<?php echo  Html::img('@backend/web'.'/'.$value_img);?>   

try using it like

  <?= Html::img(Yii::getAlias('@web').'/images/'.$value_img]);?>

Upvotes: 2

Related Questions