如何使用Laravel Livewire和Spatie媒体库上传图像?

时间:2020-08-17 16:01:21

标签: laravel media-library laravel-livewire

我正在使用Laravel Livewire和Spatie媒体库,但他们的两个文档都没有找到有关此操作的帮助。

我尝试这样做,但是给了我错误

$this->menu->addMediaFromUrl($this->menu_image->temporaryUrl())->toMediaCollection('menu_image');

am出现此错误 error am getting

4 个答案:

答案 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() 抛出文件未找到异常。