我正在使用 Laravel Livewire 和 Spatie 媒体库,但我在他们的文档中找不到任何有关如何执行此操作的有用信息。
正在尝试这个,但它给了我错误
$this->menu->addMediaFromUrl($this->menu_image->temporaryUrl())->toMediaCollection('menu_image');
对我来说,它是这样工作的:
public $uploadedItems;
public function updatedUploadedItems($uploadedFile)
{
$item = Item::create();
$item
->addMedia($uploadedFile->getRealPath())
->usingName($uploadedFile->getClientOriginalName())
->toMediaCollection('images');
}
由于我的存储和临时文件夹都在 s3 上,所以答案对我不起作用。
这是对我有用的一个
use Spatie\MediaLibrary\Support\RemoteFile;
...
return $gallery->addMedia($photo->getRealPath())
->setFile(new RemoteFile($photo->getRealPath(), 's3'))
->usingName($photo->getClientOriginalName())
->toMediaCollectionOnCloudDisk('default');
这是测试后对我有用的唯一方法
$this->menu
->addMediaFromString($this->menu_image->get())
->usingFileName($this->menu_image->getFilename())
->toMediaCollection('menu_image');
我已经尝试了上述所有选项,但似乎没有一个对我有用,所以我进行了更深入的研究,这就是对我有用的解决方案。 它更像是一个黑客,但它对我有用。
$this->lecture
->addMediaFromDisk('livewire-tmp/'.$this->lectureVideo->getFilename())
->toMediaCollection();
可能与工作环境有关,但 getRealPath() 会抛出文件未找到异常。