我在laravel应用程序中使用thephpleague/glide软件包来调整图像大小。
我写了一条下面的路由,以获取服务器上映像的width
,height
和path
,然后使用该程序包修改该映像并返回它。
Route::get('/showImage/{w}/{h}/{src}', [
'as' => 'showImage',
'uses' => function (League\Glide\Server $server, $w, $h, $src) {
$server->outputImage($src, ['w' => $w, 'h' => $h, 'fit' => 'crop']);
}
])->where('src', '.+');
假设我请求了http://www.example.com/showImage/300/168/galleries/mypic.jpg
网址。但是当galleries/mypic.jpg
是正确的并且存在于服务器上时,出现了 404 not found 错误。
我在其他项目中完全使用了此路由,但是在新主机上遇到了此问题。
我认为问题出在src
参数上,该参数可以包含/
和.
符号。因为当我使用不带任何/
和.
的字符串时,它可以工作并且可以访问src
参数。
答案 0 :(得分:1)
用(.*)
转义斜线:
Route::get('/showImage/{w}/{h}/{src}', [
'as' => 'showImage',
'uses' => function (League\Glide\Server $server, $w, $h, $src) {
$server->outputImage($src, ['w' => $w, 'h' => $h, 'fit' => 'crop']);
}
])->where('src', '(.*)');
然后运行composer dump-autoload
。
如果您无权使用ssh,请添加以下路由:
Route::get('/updateapp', function()
{
system('composer dump-autoload');
echo 'dump-autoload complete';
});
如果此命令不起作用,请在本地运行composer dump-autoload
,然后使用ftp上传文件