在laravel中访问公用文件夹内的图像

时间:2014-10-09 19:09:57

标签: laravel

如何在不使用Laravel自己的public/images功能的情况下访问assets()文件夹中存储的图像?

我只想获取存储在images文件夹中的图像的直接URL。

例如:

localhost/webapp/images/stackoverflow.png

请求链接时,我应该获得直接图像。

7 个答案:

答案 0 :(得分:31)

如果您在刀片模板中

{{ URL::to('/') }}/images/stackoverflow.png

答案 1 :(得分:15)

我已经创建了自己的资产助手。

首先,我在app/config/assets.php中定义了资产类型和路径:

return array(

    /*
    |--------------------------------------------------------------------------
    | Assets paths
    |--------------------------------------------------------------------------
    |
    | Location of all application assets, relative to the public folder,
    | may be used together with absolute paths or with URLs.
    |
    */

    'images' => '/storage/images',
    'css' => '/assets/css',
    'img' => '/assets/img',
    'js' => '/assets/js'
);

然后是实际的Asset类:

class Asset
{
    private static function getUrl($type, $file)
    {
        return URL::to(Config::get('assets.' . $type) . '/' . $file);
    }

    public static function css($file)
    {
        return self::getUrl('css', $file);
    }

    public static function img($file)
    {
        return self::getUrl('img', $file);
    }

    public static function js($file)
    {
        return self::getUrl('js', $file);
    }

}

所以在我看来,我可以这样做来显示图像:

{{ HTML::image(Asset::img('logo.png'), "My logo")) }}

或者像这样实现Java脚本:

{{ HTML::script(Asset::js('my_script.js')) }}

答案 2 :(得分:14)

只需将图像放入公共目录(公共/ ...文件夹或直接图像) 公共目录默认由laravel应用程序呈现 我们假设我将图像存储在public/images/myimage.jpg中 然后在HTML视图中,页面如:(image.blade.php)

<img src="{{url('/images/myimage.jpg')}}" alt="Image"/>

答案 3 :(得分:2)

当您想要访问公共/图像文件夹中的图像时,如果您想在不使用laravel功能的情况下访问它, 使用如下:

pane.setOnDragOver(event ->
{
    final Dragboard  dragboard;
    final DataFormat dataFormat;

    dragboard  = event.getDragboard();
    dataFormat = DataFormat.lookupMimeType("application/x-java-serialized-object");

    for (DataFormat df : dragboard.getContentTypes())
    {
        // Do nothing...
    }

    if (dragboard.hasContent(dataFormat))
        event.acceptTransferModes(TransferMode.COPY);

    event.consume();
});

这很好用。

答案 4 :(得分:2)

您只需要在Laravel中使用asset帮助函数。 (url助手也可以这种方式使用)

<img src="{{ asset('images/arrow.gif') }}" />

对于绝对路径,请改用public_path

<p>Absolute path: {{ public_path('images/arrow.gif') }}</p>

如果要从控制器(后端)提供指向公共图像的URL,则也可以使用asset,如果需要HTTPS也可以使用secure_asset。例如:

$url = asset('images/arrow.gif'); # http://example.com/assets/images/arrow.gif
$secure_url = secure_asset('images/arrow.gif'); # https://example.com/assets/images/arrow.gif

return $secure_url;

最后,如果您想直接转到给定路线的图像,则可以重定向至该图像:

return \Redirect::to($secure_url);

更多Laravel helper functions可以在此处找到

答案 5 :(得分:1)

只需使用public_path(),它将找到公用文件夹并对其进行寻址。

<img src=public_path().'/images/imagename.jpg' >

答案 6 :(得分:1)

就我而言,它运行得很好

<img style="border-radius: 50%;height: 50px;width: 80px;"  src="<?php echo asset("storage/TeacherImages/{$teacher->profilePic}")?>">

这用于显示文件夹中的图像,希望这对寻找此类代码的人有所帮助