im试图为我的本地主机环境启用该库。
http://glide.thephpleague.com/1.0/config/integrations/laravel/
Laravel当前版本5.5
gd2
。
我似乎找不到问题所在。
路径正常,图像已存在。
有关服务器配置,请参见以下代码。
$server = ServerFactory::create([
'response' => new LaravelResponseFactory(app('request')),
'source' => $source,
//'cache' => new Filesystem(new Adapter('../storage/app/cache/')),
'cache' => $cache,
'cache_path_prefix' => '.cache',
'base_url' => 'transform-img',
]);
现在我用这个
return $server->getImageResponse($path, request()->all());
它没有给出任何错误。
当我dd()
收到此邮件时,我会收到此回复。
StreamedResponse {#1151 ▼
#callback: Closure {#1177 ▶}
#streamed: false
-headersSent: false
+headers: ResponseHeaderBag {#1176 ▶}
#content: null
#version: "1.0"
#statusCode: 200
#statusText: "OK"
#charset: null
}
回叫关闭:
#callback: Closure {#1252 ▼
class: "League\Glide\Responses\SymfonyResponseFactory"
this: LaravelResponseFactory {#1231 …}
use: {▼
$stream: stream resource @543 ▼
timed_out: false
blocked: true
eof: false
wrapper_type: "plainfile"
stream_type: "STDIO"
mode: "rb"
unread_bytes: 0
seekable: true
uri: "D:\wamp\www\Bankrolla\storage\app/public\.cache/img/logo_no_text.png/32c8e67d979eab40a7ef6d1854f1f7cc"
options: []
}
}
file: "D:\wamp\www\Bankrolla\vendor\league\glide-symfony\src\Responses\SymfonyResponseFactory.php"
line: "48 to 54"
}
如statusCode显示200
一样,未找到文件也没有错误,但仍不加载任何图像,但在我浏览时在浏览器上显示了一个占位符。
可能是问题所在。如果我尝试将图像名称替换为任何其他随机字符串,则会收到找不到图像的错误。所以这意味着它确实找到了图像。您无法渲染图像。
我用Google搜索了他们的github评论,找不到与我类似的任何问题。
如果直接加载,只会得到空白页/图像。
我也查看了缓存目录,它包括文件,并且这些文件的尺寸已调整大小。因此,即使生成缓存文件,我也不知道哪里出错了。
如果有人能指出我正确的方向,这可能是我遗漏的任何观点。
更新:
$source
变量的值:
Filesystem {#1225 ▼
#adapter: Local {#1226 ▼
#pathSeparator: "\"
#permissionMap: array:2 [▼
"file" => array:2 [▼
"public" => 420
"private" => 384
]
"dir" => array:2 [▼
"public" => 493
"private" => 448
]
]
#writeFlags: 2
-linkHandling: 2
#pathPrefix: "D:\wamp\www\Bankrolla\storage\app/public\"
}
#plugins: []
#config: Config {#1229 ▼
#settings: []
#fallback: null
}
}
我的公共目录中的存储目录(它是原始存储的符号链接)
Laravel的存储目录
我从中调用的网址。
{localhostDomainHere}/image/img/logo_no_text.png?w=100&h=100&fit=crop-center
答案 0 :(得分:0)
$ source =>提及的路径将图像放置在此处。如果是1.jpg,则调用url server_url / img / 1.jpg。 img来自您的路线,涉及您发布的功能。在我的情况下,$ source和$ cache是/ storage / app,我将图像放入其中并在该图像上调用路由。希望对您有帮助。
检查
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Contracts\Filesystem\Filesystem;
use League\Glide\Responses\LaravelResponseFactory;
use League\Glide\ServerFactory;
class GlideController extends Controller
{
public function show(Filesystem $filesystem, $path)
{
$server = ServerFactory::create([
'response' => new LaravelResponseFactory(app('request')),
'source' => $filesystem->getDriver(),
'cache' => $filesystem->getDriver(),
'cache_path_prefix' => '.cache',
'base_url' => 'img',
]);
return $server->getImageResponse($path, request()->all());
}
}
路线:
Route::get('/img/{path}', 'GlideController@show')->where('path', '.*');
这是我的存储设备/应用程序的内容
答案 1 :(得分:0)