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

问题描述 投票:0回答:4

我正在使用 Laravel Livewire 和 Spatie 媒体库,但我在他们的文档中找不到任何有关如何执行此操作的有用信息。

正在尝试这个,但它给了我错误

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

收到此错误 error am getting

laravel laravel-livewire laravel-medialibrary
4个回答
6
投票

对我来说,它是这样工作的:

public $uploadedItems;
    
public function updatedUploadedItems($uploadedFile)
{
    $item = Item::create();

    $item
        ->addMedia($uploadedFile->getRealPath())
        ->usingName($uploadedFile->getClientOriginalName())
        ->toMediaCollection('images');
}

3
投票

由于我的存储和临时文件夹都在 s3 上,所以答案对我不起作用。
这是对我有用的一个

use Spatie\MediaLibrary\Support\RemoteFile;

...

return $gallery->addMedia($photo->getRealPath())
            ->setFile(new RemoteFile($photo->getRealPath(), 's3'))
            ->usingName($photo->getClientOriginalName())
            ->toMediaCollectionOnCloudDisk('default');


1
投票

这是测试后对我有用的唯一方法

      $this->menu
           ->addMediaFromString($this->menu_image->get())
           ->usingFileName($this->menu_image->getFilename())
           ->toMediaCollection('menu_image');

0
投票

我已经尝试了上述所有选项,但似乎没有一个对我有用,所以我进行了更深入的研究,这就是对我有用的解决方案。 它更像是一个黑客,但它对我有用。

$this->lecture
      ->addMediaFromDisk('livewire-tmp/'.$this->lectureVideo->getFilename())
      ->toMediaCollection();

可能与工作环境有关,但 getRealPath() 会抛出文件未找到异常。

© www.soinside.com 2019 - 2024. All rights reserved.