Laravel Livewire 队列不允许序列化
Laravel Livewire queues Serialization is not allowed
我尝试通过 laravel 队列加载多个图像,如下所示:
控制器:
foreach ($this->imagenes as $pathGaleria) {
$imagenes = $pathGaleria;
$nombre = Str::random(10) . $imagenes->getClientOriginalName();
$ruta = public_path() . '\imagenesPropiedades/' . $nombre;
dispatch(new ProcesarImagenes($pathGaleria, $ruta));
$img = imgPropiedades::create([
'url' => '/imagenesPropiedades/' . $nombre,
'property_id' => $this->propiedadId
]);
}
工作:
public $pathGaleria;
public $ruta;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($pathGaleria, $ruta)
{
$this->pathGaleria = $pathGaleria;
$this->ruta = $ruta;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$img = $this->pathGaleria;
$rut = $this->ruta;
//make recibe la imagen
Image::make($img)
->resize(800, null, function ($constraint) {
$constraint->aspectRatio();
})
->save($rut);
}
我收到以下错误:不允许序列化 'Livewire\TemporaryUploadedFile'。
任何建议对我来说都很有价值。
我建议传递临时文件的 getRealPath()
,稍后使用 file_get_contents()
并从那里继续。
例如
dispatch(new ProcesarImagenes($pathGaleria->getRealPath(), $ruta));
在你的工作下 handle()
$img = file_get_contents($this->pathGaleria);
此外,请确保在您的本地环境中使用 queue:listen
,这样您就不必在更改作业文件后重新启动队列。
我尝试通过 laravel 队列加载多个图像,如下所示:
控制器:
foreach ($this->imagenes as $pathGaleria) {
$imagenes = $pathGaleria;
$nombre = Str::random(10) . $imagenes->getClientOriginalName();
$ruta = public_path() . '\imagenesPropiedades/' . $nombre;
dispatch(new ProcesarImagenes($pathGaleria, $ruta));
$img = imgPropiedades::create([
'url' => '/imagenesPropiedades/' . $nombre,
'property_id' => $this->propiedadId
]);
}
工作:
public $pathGaleria;
public $ruta;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($pathGaleria, $ruta)
{
$this->pathGaleria = $pathGaleria;
$this->ruta = $ruta;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$img = $this->pathGaleria;
$rut = $this->ruta;
//make recibe la imagen
Image::make($img)
->resize(800, null, function ($constraint) {
$constraint->aspectRatio();
})
->save($rut);
}
我收到以下错误:不允许序列化 'Livewire\TemporaryUploadedFile'。
任何建议对我来说都很有价值。
我建议传递临时文件的 getRealPath()
,稍后使用 file_get_contents()
并从那里继续。
例如
dispatch(new ProcesarImagenes($pathGaleria->getRealPath(), $ruta));
在你的工作下 handle()
$img = file_get_contents($this->pathGaleria);
此外,请确保在您的本地环境中使用 queue:listen
,这样您就不必在更改作业文件后重新启动队列。