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

Теперь вы можете использовать это в вашем просмотров:

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