1

希望将我所有用户上传的图像移到公众视野之外。

我的结构是这样的:

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

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

4

1 回答 1

0

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

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') }}
于 2015-01-01T23:47:39.643 回答