Tugasan beratur membuat permintaan untuk mengakses fail daripada Laravel
P粉762447363
P粉762447363 2023-09-03 13:43:56
0
1
450

Hai semua, saya mempunyai tugas Laravel beratur untuk memasukkan beberapa rekod ke dalam pangkalan data melalui fail yang diimport oleh pengguna. Tetapi apabila saya mengakses objek permintaan dalam kerja untuk mendapatkan fail yang dimuat naik, saya mendapat null. Walau bagaimanapun, fail diterima seperti biasa dalam pengawal. Ada idea?

Cari kaedah import dalam pengawal seperti berikut:

import fungsi awam(ImportPointRequest $request) { Storan::makeDirectory('import_logs'); $file = request()->file('file'); $fileName = 'importlog_date_' . $logFile = 'import_logs/' $fileName; $readerTypes = ['xlsx' => Excel::XLSX, 'xls' => $link = route('file.show', ['import_logs', $fileName]); cuba { ExcelFacade::import(new PointsImportHeading(), $file); } tangkapan (Pengecualian $e) { kembalikan $this->returnBadRequest(config('point.error-codes.import-fail'), $e->getMessage()); } (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', ['modul' =>trans('point::point.point')])); }

Cari kaedah getImportedFileContent dalam kerja seperti berikut:

fungsi dilindungi getUploadedFileContent(): tatasusunan { kembalikan Excel::toArray(new PointsImportHeading(), request()->file('file')); }

Masalahnya ialah bahagian ini request()->file('file')

P粉762447363
P粉762447363

membalas semua (1)
P粉852114752

Kaedah anda tidak betul. Dalam Laravel, kitaran hayat permintaan bermula apabila permintaan tiba di pelayan dan berakhir apabila respons dihantar semula ke penyemak imbas pengguna. Apabila anda membuat baris gilir kerja dalam Laravel, ini bermakna kerja itu akan diproses kemudian, mungkin juga pada pelayan yang berbeza. Apabila kerja benar-benar berjalan, kitaran hayat permintaan asal telah tamat. Oleh itu, anda tidak boleh mengakses data permintaan dalam kerja beratur.

Jika anda perlu menggunakan fail yang dimuat naik dalam kerja beratur, anda perlu menyimpan fail yang dimuat naik di lokasi yang boleh diakses oleh kerja itu. Ini boleh menjadi sistem fail pelayan anda atau perkhidmatan storan awan.

Dalam pengawal anda, anda telah menyimpan sementara fail untuk diproses dengan Excel:

$file = request()->file('file');

Walau bagaimanapun, anda tidak meneruskan fail, itulah sebabnya fail tidak tersedia semasa kerja sedang dijalankan. Anda perlu menyimpan fail anda di tempat yang lebih kekal.

Selepas menyimpan fail secara kekal, anda boleh membaca fail dari lokasi baharu.

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!