2015-01-01 23 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') }}