在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' ]);
时间紧凑,不懂得可以问我,一起交流。
lumen 显示图片,预览图片
猜你喜欢
转载自blog.csdn.net/qq_38013157/article/details/83340822
今日推荐
周排行