Laravel queues 对字符串的成员函数 storeAs() 的调用

Laravel queues Call to a member function storeAs() on string

我正在尝试通过 laravel 队列存储大图像,如下所示,因为我不想让我的用户等到文件被存储:

This code is in controller

if($request->hasfile('featuringPhoto')) 
        {
            $prefixFilename = date("Y-m-d-H-i-s");
            $coverFilename = $prefixFilename.$request->featuringPhoto->getClientOriginalName();
            
            ProceessFiles::dispatch($request->featuringPhoto->getRealPath(),$coverFilename);
            
        }
        else
        {
            $coverFilename4 = NULL;
        }

下面的代码在工作中

protected $files, $filename;

public function __construct($files,$filename)
    {
        $this->files= $files;
        $this->filename = $filename;
    }

public function handle()
    {
        if($this->files){
            
         
          $coverFilename = $prefixFilename.$this->filename;
          $img = file_get_contents($this->files);
    
          $img->storeAs('images/photosUploadedByUser', $coverFilename, 'public');
      
        }
    }

它给我一个错误提示 Call to a member function storeAs() on string 我从堆栈中尝试了这个 但没有用

任何建议都会appreciated.Thank你。

我认为假设您将通过在队列中执行保存操作来节省大量时间是错误的,还因为您已经从 Web 服务器获取它。队列通常会随着缩放而移动到工作服务器,而使用这种方法将行不通。

本着问题的精神,Whosebug 向您解释什么不起作用。 file_get_contents() returns 字符串形式的文件内容。所以要解决你的问题,你应该只存储它的结果。你显然不能在字符串上调用方法。

$coverFilename = $prefixFilename.$this->filename;
$img = file_get_contents($this->files);
Storage::put('images/photosUploadedByUser/' . $coverFilename, $img);