当前位置: 代码迷 >> 综合 >> lumen 显示图片,预览图片
  详细解决方案

lumen 显示图片,预览图片

热度:50   发布时间:2023-12-03 20:14:00.0

 

在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'
]);

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