laravel消息队列 分发任务的时候传入$path 提示HttpFoundation\File\File'

laravel 消息队列来进行Excel导入,然后报错Serialization of ‘Symfony\Component\HttpFoundation\File\File’ is not allowed
——————————————————————————————————————————

$file = $request->file('upload_file');//上传了一个excel文件
$path = $file->move(public_path('uploads/files'),$newFileName);
$isRedis = true;
ImportProjectJob::dispatch($path)->onQueue('imports');
class ImportExcelJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    public $file_path;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($file_path)
    {
        $this->file_path = $file_path;
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
        Excel::import(new ProjectsRedisImport,$this->file_path);
    }
}

分发任务传入$path后会提示
Serialization of ‘Symfony\Component\HttpFoundation\File\File’ is not allowed
我想用消息队列,来把导入的Excel文件中信息存下来,是否可以,这样就可以提升项目的运行速度,因为我导入的文件都是比较大的,请问我现在这个想法是否正确?这个问题该怎么解决

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

已经解决,我上传的$path = $file->move(public_path('uploads/files'),$newFileName)是一个对象,而这个对象会报 Serialization of ‘Symfony\Component\HttpFoundation\File\File’ is not allowed 这时候你直接传文件的真实地址就可以了,就不会出现相应的 $uploadedFile = $file->move(public_path('uploads/files'),$newFileName);
$path = $uploadedFile->getRealPath(); 原来是自己以前写代码的时候没注意...

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!