lumen 显示图片,预览图片

在lumen中预览图片有一个坑,laravel中大家都知道,显示图片和文件可以借鉴文件响应那一块。

file 方法可用于直接在用户浏览器显示文件,例如图片或 PDF,而不需要下载,该方法接收文件路径作为第一个参数,头信息数组作为第二个参 数: 
return response()->file($pathToFile);

return response()->file($pathToFile, $headers);

而在lumen5.6的文档中是没有response()->file()的,那怎么才能显示图片呢。可能大家知道建立软连接,在laravel工程根目录

执行命令:php artisan storage:link

也就是在根目录的public文件夹下建一个stotage文件夹,你手动自己建也可以,因为这个文件夹是laravel&&lumen中唯一面向公众的,知道链接后谁可以直接访问。同时问题也来了,这种方式的安全问题令人深思。

首先我要显示的是在数据库中存储的图片,在数据库中存储的图片其实只是一个带后缀的图片名称。

比如这样:

首先在控制器中:

    public function getResultImage($id){
        $image = ResultModel::find($id);
        if (!$image){
            return '暂无资源';
        }
        $name = $image->thumb;
        //图片所在路径
        $dir = storage_path('app/public/image/');

        $header = ['Content-Type'=>'image/jpeg'];//array('Content-Type'=>'text/image');
        $content = file_get_contents($dir.$name);
        return response()->make($content, 200, $header);

//        return redirect('storage/uploads/'.$name);

    }

然后在路由中定义,

//查看图片
Route::get('getResultImage/{id}',[
    'as'=>'projectV.image.get',
    'uses'=>'V1\ResultController@getResultImage'
]);

时间紧凑,不懂得可以问我,一起交流。

发布了6 篇原创文章 · 获赞 8 · 访问量 6886

猜你喜欢

转载自blog.csdn.net/qq_38013157/article/details/83340822