2016-08-11 3 views
1

После сканирования почти всех ударов Google и SO, я до сих пор не могу это исправить.Служить изображение из папки хранилища для просмотра в Laravel 5

В моем приложении пользователь может загрузить изображение. Поскольку данные пользователя довольно чувствительны, я сохраняю все в папке хранилища и использую php для обслуживания изображения.

Посмотреть

<img src="{{ asset('logo/' . $organization->logo_thumbnail_path) }}" alt=""> 

Маршрут

Route::get('logo/{logo}', function($logo) { 

    $image = Image::make(Storage::disk('logo-image')->get($logo)); 
    $image->response(); 

}); 

Маршрут выглядит в storage/app/img/logo для соответствующего файла. Если я эхо Storage::disk('logo-image')->get($logo), я получаю огромную страницу странных персонажей, которая заставляет меня поверить, что она действительно получает изображение .jpg.

Однако изображение не отображается, даже если я посещаю маршрут напрямую.

Кроме того, если я изменю маршрут, чтобы вернуть меня на домашнюю страницу, и я открою представление, в котором изображение должно отображаться, ничего не происходит. Это заставляет меня думать, что маршрут никогда не вызывается из тега <img>.

Неужели кто-нибудь из вас знает об этом больше? Я довольно застрял, и часы поиска ничего не сделали.

EDIT: Вручную устанавливая все заголовки и прочее в ответе, убедитесь, что изображение отображается.

+0

Я принимаю дикие предположения здесь, но я предполагаю, что заголовки верны? – Andrew

+0

Я использую библиотеку вмешательства/изображения, в которой говорится, что метод response(), который я вызываю, должен содержать все правильные заголовки. Кроме того, если я повторяю ответ «$ image->», я получаю еще одну огромную страницу странных символов. http://image.intervention.io/api/response – Loek

+0

Возможный дубликат [Laravel 5 - Как получить доступ к изображению, загруженному в хранилище в представлении?] (http://stackoverflow.com/questions/30191330/laravel-5-how -to-access-image-uploaded-in-storage-in-view) – aynber

ответ

1

Похоже, ответ был довольно прост, я не вернулся $image->response()

So return $image-response(); и все работает.

Спасибо @ Drown!

+0

Есть ли способ проверить, поступают ли запросы из внешнего домена?Я имею в виду, вернуть изображение для внешних запросов, но показать представление, если пользователь вводит маршрут в браузере напрямую. – JCarlos

+0

Что ты имеешь в виду? Каждый запрос является внешним, если он не приходит с того же сервера, на котором выполняется ваш код. – Loek

+0

Например: '' 'https: // media.giphy.com/media/3ohzdNzYZoPbJwLHtC/giphy.gif''' этот gif можно использовать в теге' '' img''', и изображение загружается. Но, если мы перейдем к ссылке непосредственно в браузере, появится страница (не только изображение). – JCarlos

Смежные вопросы