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

Так что я не уверен, почему это не работает? Есть идеи?

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') }}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]