【问题标题】:Laravel linking image to base pathLaravel 将图像链接到基本路径
【发布时间】:2015-01-01 22:47:33
【问题描述】:

希望将我的所有用户上传的图片移出公众视野。

我的结构是这样的:

Mamp
  htdocs
    buildsanctuary
      /app
      /public_html
        / images
      /user_images

我曾经用以下方式链接到图片:

{{ asset('/')}} images/linktoimage.jpeg

但是我现在已经像这样链接了:

<?php echo base_path() ?> /user_images/linktoimage.jpeg

但这不起作用,它显示为找不到图像。

在浏览器中检查图像的链接时,它会显示:

http://localhost/Applications/MAMP/htdocs/buildsanctuary/user_images/linktoimage.jpeg

所以我不确定为什么这不起作用?有什么想法吗?

【问题讨论】:

  • 因为浏览器无法直接访问公共目录之外的文件。您需要添加一个路由,然后读取并返回图像。
  • 啊,这是合乎逻辑的。好的,谢谢!

标签: php laravel public-html


【解决方案1】:

因为浏览器无法直接访问公共目录之外的文件。
如果可以,我会将它们留在公用文件夹中。但是,如果您确实需要移动它们(例如,为了保护它们,只有经过身份验证的用户才能查看图片),您可以创建一个路径,然后读取文件并返回它:

Route::get('user_images/{filename}', array('as' => 'user_images', function($filename){
    if(!File::exists($path)){
        App::abort(404);
    }
    $guesser = Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser::getInstance();
    $mimeType = $guesser->guess($path);
    return Response::make(File::get($path), 200, array('Content-Type' => $mimeType));
}))->where('filename', '.*');

现在您可以在视图中使用它:

{{ route('user_images', 'linktoimage.jpeg') }}

【讨论】:

    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 2018-02-17
    • 2020-08-22
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多