如何使用 Livewire 上传作业文件?
How to job file upload with Livewire?
我需要通过排队将图像上传到 S3
,然后使用 Livewire
上传到 S3
我的 livewire 组件:
class s3 extends Component
{
use WithFileUploads;
public $image;
public function save()
{
$this->validate(['image' => 'image']);
dispatch(new ImageUpload($this->image));
return 'success';
}
}
我的队列工作class:
class ImageUpload implements ShouldQueue
{
public $image;
public function __construct($image)
{
$this->image = $image;
}
public function handle()
{
Storage::disk('s3')->put('uploads/product_images/', $this->image, 'public');
}
}
我遇到了这个错误::
Exception
Serialization of 'Livewire\TemporaryUploadedFile' is not allowed
你必须传递一些可以序列化的东西。
我想不到的一种方法(因为看起来您正在存储临时文件)是简单地将临时文件名和路径传递给您的工作,它将处理其余部分。
像这样的东西应该可以工作:
您的 Livewire 组件:
class s3 extends Component
{
use WithFileUploads;
public $image;
public function save()
{
$this->validate(['image' => 'image']);
$image = [
'name' => $this->image->getClientOriginalName(),
'path' => $this->image->getRealPath(),
];
dispatch(new ImageUpload($image));
return 'success';
}
}
你的工作class:
class ImageUpload implements ShouldQueue
{
public $image;
public function __construct($image)
{
$this->image = $image;
}
public function handle()
{
Storage::disk('s3')->put('uploads/product_images/'.$this->image['name'], file_get_contents($this->image['path']), 'public');
}
}
它很粗糙,但应该可以让您朝着正确的方向前进。
我需要通过排队将图像上传到 S3
,然后使用 Livewire
S3
我的 livewire 组件:
class s3 extends Component
{
use WithFileUploads;
public $image;
public function save()
{
$this->validate(['image' => 'image']);
dispatch(new ImageUpload($this->image));
return 'success';
}
}
我的队列工作class:
class ImageUpload implements ShouldQueue
{
public $image;
public function __construct($image)
{
$this->image = $image;
}
public function handle()
{
Storage::disk('s3')->put('uploads/product_images/', $this->image, 'public');
}
}
我遇到了这个错误::
Exception
Serialization of 'Livewire\TemporaryUploadedFile' is not allowed
你必须传递一些可以序列化的东西。
我想不到的一种方法(因为看起来您正在存储临时文件)是简单地将临时文件名和路径传递给您的工作,它将处理其余部分。
像这样的东西应该可以工作:
您的 Livewire 组件:
class s3 extends Component
{
use WithFileUploads;
public $image;
public function save()
{
$this->validate(['image' => 'image']);
$image = [
'name' => $this->image->getClientOriginalName(),
'path' => $this->image->getRealPath(),
];
dispatch(new ImageUpload($image));
return 'success';
}
}
你的工作class:
class ImageUpload implements ShouldQueue
{
public $image;
public function __construct($image)
{
$this->image = $image;
}
public function handle()
{
Storage::disk('s3')->put('uploads/product_images/'.$this->image['name'], file_get_contents($this->image['path']), 'public');
}
}
它很粗糙,但应该可以让您朝着正确的方向前进。