滑行库|图片未加载

时间:2018-08-28 13:10:05

标签: laravel image laravel-5 php-glide

im试图为我的本地主机环境启用该库。

  

http://glide.thephpleague.com/1.0/config/integrations/laravel/

Laravel当前版本5.5

Wamp扩展程序中已启用

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评论,找不到与我类似的任何问题。

如果直接加载,只会得到空白页/图像。

enter image description here

我也查看了缓存目录,它包括文件,并且这些文件的尺寸已调整大小。因此,即使生成缓存文件,我也不知道哪里出错了。

enter image description here

如果有人能指出我正确的方向,这可能是我遗漏的任何观点。


更新

$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
  }
}

我的公共目录中的存储目录(它是原始存储的符号链接)

enter image description here

Laravel的存储目录

enter image description here

我从中调用的网址。

{localhostDomainHere}/image/img/logo_no_text.png?w=100&h=100&fit=crop-center

2 个答案:

答案 0 :(得分:0)

$ source =>提及的路径将图像放置在此处。如果是1.jpg,则调用url server_url / img / 1.jpg。 img来自您的路线,涉及您发布的功能。在我的情况下,$ source和$ cache是​​/ storage / app,我将图像放入其中并在该图像上调用路由。希望对您有帮助。

检查

enter image description here 这是我的代码:

<?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', '.*');

这是我的存储设备/应用程序的内容

enter image description here

答案 1 :(得分:0)

不知道您是否已解决它。但是几天前我们遇到了同样的问题。经过长时间的搜索,我们发现该错误是由配置中的新行捕获的:

config file

因此,在打开标签之前,请检查所有配置文件中的空格或换行符。否则,您的回复将不再是有效的回复,您将得到一个空框。

如果它不是配置文件,则需要检查请求中加载的所有文件。