我正在从RTF编辑器中以base64接收多个图像。我的想法是上传所有图像,并用新创建的图像路径替换文章内容中的base64 img src。我正在使用spatie媒体库和Laravel。
foreach ($data['images'] as $image) {
$article->addMediaFromBase64($image)->toMediaCollection('article-images');
$mediaItems = $article->getMedia('article-images');
$article->content = str_replace($image, $mediaItems[count($mediaItems) - 1]->getFullUrl(), $article->content);
$article->save();
}
我遇到的问题是$ article-> getMedia('article-images')始终仅返回第一个创建的图像,并且计数始终为一个。所以最终发生的事情是,无论我上传了多少张图片,它们都会用第一张图片的网址替换所有src标签。
答案 0 :(得分:0)
这是我的最终解决方案。该关系可能是在上传第一张图像后缓存的,这可能就是为什么我总是得到第一张图像。在模型上加载媒体关系后,我能够正确检索集合中的所有图像。
foreach ($data['images'] as $image) {
$article->addMediaFromBase64($image)->toMediaCollection('article-images');
$mediaItems = $article->load('media')->getMedia('article-images');
$article->content = str_replace($image, $mediaItems[count($mediaItems) - 1]->getFullUrl(), $article->content);
}