Laravel API从公用文件夹中返回包含数据库数据的图像

Muh*_*mim 0 api laravel

我想返回带有数据的图像。

$ads = DB::table('ads')->whereRaw('category_id=' .$id)->orderBy('id', 'desc')->get();

$filename = public_path().'/uploads/images/'.$ads->ad_image;
$filename = (file_get_contents($filename));
$image = Array('image'=>json_encode(base64_encode($filename)));
$ads[0]->image = $image;

return $ads; 
Run Code Online (Sandbox Code Playgroud)

jay*_*kar 5

假设要在laravel的存储目录中存储的页面上向用户显示图像,可以执行以下实现:

创建一个控制器以获取并返回图像作为响应。

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\View;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Response;
Use DB;


class PhotoController extends Controller
{
    public function image($fileName){
        $path = public_path().'/uploads/images/'.$fileName;
        return Response::download($path);        
    }
}
Run Code Online (Sandbox Code Playgroud)

添加路线以处理图像请求

Route::get('image/{filename}',PhotoController @image);
Run Code Online (Sandbox Code Playgroud)

现在,要访问图像,请在图像标签中说

<img src="image/abc.jpg">
Run Code Online (Sandbox Code Playgroud)

PS:这种提供图像的方法相对于图像的直接链接几乎没有任何开销。
如果您的图像是公共的,则只需创建将图像存储到公共目录的目录的符号链接。