2015-01-01 21 views
1

正在将所有用户上传的图像移动到公共视图之外。Laravel将图像链接到基本路径

我有我的结构,像这样:

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 

为什么这个心不是工作,所以林不知道?有任何想法吗?

+0

因为公共目录之外的文件不能直接被浏览器访问。您需要添加一条路线,然后读取并返回图像。 – lukasgeiter

+0

啊,这是合乎逻辑的。好的谢谢! – Lovelock

回答

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', '.*'); 

现在你可以在使用你的views:

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