Laravelからファイルにアクセスするリクエストを行うキュータスク
<p>皆さん、こんにちは。ユーザーがインポートしたファイルを介してデータベースにいくつかのレコードを挿入するキューに入れられた Laravel ジョブがあります。しかし、アップロードされたファイルを取得するためにジョブ内のリクエスト オブジェクトにアクセスすると、必ず null が返されます。ただし、コントローラではファイルは正常に受信されます。何か案は? </p>
<p>次のようにコントローラーでインポート メソッドを見つけます。</p>
<pre class="brush:php;toolbar:false;">パブリック関数 import(ImportPointRequest $request)
{
Storage::makeDirectory('import_logs');
$file = request()->file('file');
$fileName = 'importlog_date_' . date('Y-m-d') . '-user_' . auth()->id() . '.xlsx';
$logFile = 'import_logs/' . $fileName;
$readerTypes = ['xlsx' => Excel::XLSX, 'xls' => Excel::XLS, 'csv' => Excel::CSV];
$link = Route('file.show', ['import_logs', $fileName]);
試す {
ExcelFacade::import(new PointsImportHeading(), $file);
} catch (\Exception $e) {
return $this->returnBadRequest(config('point.error-codes.import-fail'), $e->getMessage());
}
(new PointsImport(auth()->user(), auth()->user()->account_id, $logFile))->queue(
$file->getRealPath(),
ヌル、
$readerTypes[request()->file('file')->getClientOriginalExtension()]
)->chain([new AfterImportJob(auth()->id(), $logFile, $link)]);
return $this->returnSuccess(trans('point::point.import-queued', ['module' => trans('point::point.point')]));
}</pre>
<p>次のようにジョブ内で get ImportFileContent メソッドを見つけます。 </p>
<pre class="brush:php;toolbar:false;">保護された関数 getUploadedFileContent(): 配列
{
return Excel::toArray(new PointsImportHeading(), request()->file('file'));
}</pre>
<p>問題は、この部分 <code>request()->file('file')</code> が常に null を返すことです。 </p>