带有cloudinary的spatie媒体库

时间:2020-03-01 18:03:58

标签: laravel cloudinary

我正在尝试集成spatie媒体库软件包,以使用cloudinary托管和提供图像。

该软件包不支持cloudinary,所以我不得不使用另一个旧软件包:flysystem-cloudinary

我还关注了关于stackoverflow的讨论,其中有人也与之抗争:spatie-cloudinary

我设法将图像上传到cloudinary,但是当我尝试检索它时,出现此错误:

App \ Cloudinary \ CloudinaryUrlGenerator :: getTemporaryUrl()的声明:字符串必须与Spatie \ MediaLibrary \ UrlGenerator \ UrlGenerator :: getTemporaryUrl(DateTimeInterface $ expiration,array $ options = Array):string

兼容

这是我的CloudinaryUrlGenerator:

<?php

namespace App\Cloudinary;

use Spatie\MediaLibrary\UrlGenerator\BaseUrlGenerator;

class CloudinaryUrlGenerator extends BaseUrlGenerator
{
    const HOST = 'https://res.cloudinary.com/';

/**
 * Get the url for a media item.
 *
 * @return string
 */
public function getUrl(): string
{
    $cloudBaseUrl = self::HOST . config('filesystems.disks.cloudinary.cloud_name') . '/';

    $options = [
        'q_auto',
    ];

    $filePathIncludingFilenameAndExtension = '/' . $this->pathGenerator->getPath($this->media) . $this->media->file_name;

    return $cloudBaseUrl . implode(',', $options) . $filePathIncludingFilenameAndExtension;
}

/**
 * Get the temp url for a media item.
 *
 * @return string
 */
public function getTemporaryUrl(): string
{
    return $this->getUrl();
}

/**
 * Get the responsive images directory url for a media item.
 *
 * @return string
 */
public function getResponsiveImagesDirectoryUrl(): string
{
    return $this->getUrl();
}
}

我尝试使用函数定义,但并没有解决它。

1 个答案:

答案 0 :(得分:1)

如果使用< v7,则可以使用它。

v7发布以来,getTemporaryUrl具有两个参数:

getTemporaryUrl(DateTimeInterface $expiration, array $options = []): string;

您可以将这些参数添加到您的方法中:

use DateTimeInterface;

// 

public function getTemporaryUrl(DateTimeInterface $expiration, array $options = []): string
{
    return $this->getUrl();
}
``