Warteschlangenaufgabe, die eine Anfrage zum Zugriff auf die Datei von Laravel stellt
<p>Hallo zusammen, ich habe einen Laravel-Job in der Warteschlange, um einige Datensätze über eine vom Benutzer importierte Datei in die Datenbank einzufügen. Aber wenn ich im Job auf das Anforderungsobjekt zugreife, um die hochgeladene Datei abzurufen, erhalte ich null. Die Datei wird jedoch normal im Controller empfangen. Irgendwelche Ideen? </p>
<p>Suchen Sie die Importmethode im Controller wie folgt: </p>
<pre class="brush:php;toolbar:false;">public function import(ImportPointRequest $request)
{
Storage::makeDirectory('import_logs');
$file = request()->file('file');
$fileName = 'importlog_date_' . date('Y-m-d') .
$logFile = 'import_logs/' .
$readerTypes = ['xlsx' => Excel::XLSX, 'xls' => Excel::XLS, 'csv' =>
$link = route('file.show', ['import_logs', $fileName]);
versuchen {
ExcelFacade::import(new PointsImportHeading(), $file);
} Catch (Ausnahme $e) {
return $this->returnBadRequest(config('point.error-codes.import-fail'), $e->getMessage());
}
(new PointsImport(auth()->user(), auth()->user()->account_id, $logFile))->queue(
$file->getRealPath(),
Null,
$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>Suchen Sie die Methode getImportedFileContent im Job wie folgt: </p>
<pre class="brush:php;toolbar:false;">protected function getUploadedFileContent(): array
{
return Excel::toArray(new PointsImportHeading(), request()->file('file'));
}</pre>
<p>Das Problem ist, dass dieser Teil <code>request()->file('file')</code> immer null zurückgibt. </p>