Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk melaksanakan muat naik fail dalam laravel

Bagaimana untuk melaksanakan muat naik fail dalam laravel

PHPz
PHPzasal
2023-04-14 16:19:342463semak imbas

Laravel ialah rangka kerja PHP popular yang digunakan secara meluas dalam pembangunan aplikasi web dan tapak web. Dalam pembangunan aplikasi sebenar, muat naik fail adalah keperluan biasa. Dalam Laravel, muat naik fail adalah sangat mudah dan anda hanya perlu mengikuti beberapa langkah asas.

Pertama, kita perlu menetapkan konfigurasi berkaitan muat naik fail dalam Laravel. Buka fail config/filesystems.php dan kita boleh melihat semua konfigurasi sistem fail dalam sistem semasa. Dalam fail ini, kami boleh menambah konfigurasi sistem fail baharu dengan mudah seperti cakera setempat, Amazon S3, Rackspace, dsb.

Seterusnya, kita perlu membuat borang muat naik fail supaya pengguna boleh memuat naik fail. Dalam Laravel, kita boleh menggunakan Pembina Borang Laravel Collective untuk mencipta borang. Komponen ini boleh mencipta elemen borang HTML dengan mudah, menjadikannya mudah dan mudah untuk kami menambah kawalan muat naik fail pada borang.

Berikut ialah kod contoh borang ringkas:

{!! Form::open(['route' => 'upload.file', 'files' => true]) !!}

{!! Form::file('file') !!}

{!! Form::submit('上传文件') !!}

{!! Form::close() !!}

Dalam contoh ini, "laluan" menentukan laluan permintaan borang dan parameter 'fail' memberitahu Laravel bahawa borang ini perlu memuat naik fail. Kita boleh menggunakan kaedah file() dalam Form Builder untuk mencipta kawalan muat naik fail.

Apabila pengguna memuat naik fail, Laravel akan menyimpan fail dalam direktori "storage/app". Untuk menjadikan fail yang dimuat naik boleh diakses terus, kita perlu mencipta pautan simbolik.

Buka terminal dan masukkan arahan berikut:

php artisan storage:link

Arahan ini akan mencipta pautan simbolik dalam direktori awam, membolehkan kami mengakses fail yang dimuat naik melalui pelayar web.

Seterusnya, kita perlu mengendalikan fail yang dimuat naik dalam pengawal. Laravel menyediakan kaedah yang sangat mudah, kita boleh melaksanakan fungsi memuat naik fail melalui kod berikut:

public function upload(Request $request)
{
    $file = $request->file('file');

    $filename = $file->getClientOriginalName();

    $path = $file->storeAs('upload', $filename);

    return back()->with('success','文件已经上传!');
}

Dalam kod ini, kita mula-mula mendapatkan fail yang dimuat naik daripada permintaan, dan kemudian mendapatkan nama fail asal . Seterusnya, kami menggunakan kaedah storeAs() untuk menyimpan fail dalam direktori yang ditentukan dan menentukan nama fail. Akhir sekali, kami menggunakan kaedah with() untuk menyediakan mesej kejayaan dan kemudian mengubah hala pengguna kembali ke halaman asal.

Akhir sekali, kita perlu mencipta laluan untuk fail yang dimuat naik untuk mengendalikan fungsi muat turun fail. Dalam fail laluan, tambahkan kod berikut:

Route::get('/download/{file}', function ($file) {
    $path = storage_path('app/upload/'.$file);

    if (!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
})->name('file.download');

Dalam kod ini, kita mula-mula mendapat laluan fail dan kemudian menyemak sama ada fail itu wujud. Seterusnya, kami menggunakan kaedah get() kelas Fail untuk membaca kandungan fail, dan menggunakan kaedah mimetype() untuk mendapatkan jenis mime fail. Akhir sekali, kami menggunakan kelas Respons untuk mencipta objek respons dan menghantar kandungan fail ke penyemak imbas.

Memuat naik fail ialah keperluan biasa, dan Laravel menyediakan penyelesaian yang sangat mudah. Menggunakan mekanisme muat naik fail Laravel, pembangun web boleh dengan cepat, mudah dan selamat melaksanakan fungsi muat naik, penyimpanan dan muat turun fail.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan muat naik fail dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn