Я использую Laravel 9 и хотел показать изображение, которое хранится в хранилище/приложении/аватарах.
Итак, я попробовал это в Blade:
{{ \App\Http\HelperClasses\ImageHelper::admAvatar() }}
А это класс ImageHelper
:
namespace App\Http\HelperClasses;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Storage;
class ImageHelper
{
public static function admAvatar()
{
$content = Storage::get('avatars/profile.png');
return Response::make($content)->header('content-type','image/jpeg');
}
}
Поэтому я попытался сделать изображение из profile.png
и вернуть его в конце концов.
Но проблема в том, что он ничего не показывает!
И когда я dd(Response::make($content)->header('content-type','image/jpeg'))
, я получаю это:
И результат dd($content)
также выглядит так:
Итак, как я могу правильно преобразовать это в изображение?
Я сделал вот так Контроллер: public function getFile($type, $id) { $contents = Storage::get($file_path); return response($contents, 200, $headers); }
Маршруты: Route::get('/attachments/display/{parent_type}/{parent_id}', [App\Http\Controllers\AttachmentController::class, 'display']);
HTML: <img src = "/attachments/display/avatar/1" />
@justrusty Пожалуйста, добавьте его как ответ, чтобы он был более читабельным
я сделал вот так
Контроллер:
public function getFile($type, $id) {
$attachment = Attachment::where([['parent_type', $type], ['parent_id', $id]])->latest()->firstOrFail();
$headers = ['content-type' => 'image/jpeg'];
$contents = Storage::get($attachment->file_path);
return response($contents, 200, $headers);
}
Маршруты:
Route::get('/attachments/display/{type}/{id}', [App\Http\Controllers\AttachmentController::class, 'getFile']);
HTML:
<img src = "/attachments/display/avatar/1" />
как вы собираетесь "рендерить" изображение? в таком фронтенде? Вы можете преобразовать его в base64 и попытаться загрузить его в тег <img>, нет?