发生这种情况是因为 spatie 包正在尝试对上传的图像进行转换。前往medialibrary.php
配置文件并注释掉这些行:
'image_generators' => [
Spatie\MediaLibrary\ImageGenerators\FileTypes\Image::class,
Spatie\MediaLibrary\ImageGenerators\FileTypes\Webp::class,
Spatie\MediaLibrary\ImageGenerators\FileTypes\Pdf::class,
Spatie\MediaLibrary\ImageGenerators\FileTypes\Svg::class,
Spatie\MediaLibrary\ImageGenerators\FileTypes\Video::class,
],
当没有找到给定图像 mime 类型的生成器时,图像将不会被转换。因此不会抛出错误。然后使用 cloudinary 转换图像。
为此我创建了一个CloudinaryUrlGenerator
这延伸了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;
}
In getTemporaryUrl
and getResponsiveImagesDirectoryUrl
我只是回来了:$this->getUrl()
.
完成此操作后,您可以像这样获取图像:
<img src="{{ $model->media->first()->getUrl() }}" />