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