Rumah > Artikel > rangka kerja php > Muat naik dan muat turun fail dalam rangka kerja Yii: melaksanakan operasi fail
Dalam pembangunan web, muat naik dan muat turun fail adalah keperluan yang sangat biasa. Dalam rangka kerja Yii, kami boleh melaksanakan operasi fail dengan mudah melalui fungsi muat naik dan muat turun fail terbina dalam. Dalam artikel ini, kami akan memperkenalkan cara memuat naik dan memuat turun fail dalam rangka kerja Yii.
1. Muat naik fail
Muat naik fail biasanya melibatkan dua proses: penyampaian borang muat naik dan pemprosesan muat naik fail. Dalam rangka kerja Yii, kami boleh memaparkan borang muat naik dengan menggunakan Borang Aktif, dan kemudian gunakan UploadedFile dalam pengawal bahagian belakang untuk mengendalikan proses muat naik fail.
Untuk memuat naik fail, anda perlu memberikan borang muat naik terlebih dahulu. Dalam rangka kerja Yii, kita boleh menggunakan Borang Aktif untuk menjana borang muat naik dengan cepat. Berikut ialah contoh borang muat naik fail mudah:
$form = ActiveForm::begin([
'options' => ['enctype' => 'multipart/form-data']
]) ?>
155b33ba918f73a0b9e03c2e65a956e3field($model, 'fail')->fileInput() ?>
07cb10094d7fc1aeafbde86dbf86ce42Muat naik65281c5ac262bf6d81768915a4a77ac0
4f1dc6926d85ca6550efdcb445973731
Dalam kod, kami menggunakan kaedah begin() dan end() Borang Aktif untuk membungkus borang dan menetapkan atribut 'enctype' kepada 'multipart/form-data' untuk menyokong Fail muat naik. Kemudian, kami menggunakan kaedah $form->field() untuk menjana medan borang Nama medan ialah atribut dalam model kami, di sini kami menggunakan 'fail'. Akhir sekali, kami menambah butang hantar yang pengguna boleh klik untuk memuat naik fail.
Sebaik sahaja pengguna mengklik butang muat naik, kami perlu mengendalikan muat naik fail dalam pengawal bahagian belakang. Dalam rangka kerja Yii, kita boleh menggunakan kelas UploadedFile untuk mengendalikan muat naik fail. Berikut ialah kod pengawal muat naik fail yang mudah:
public function actionUpload()
{
$model = new FileModel(); if(Yii::$app->request->isPost){ $model->file = UploadedFile::getInstance($model, 'file'); if($model->upload()){ Yii::$app->session->setFlash('success', '文件上传成功'); }else{ Yii::$app->session->setFlash('error', '文件上传失败'); } } return $this->render('upload', ['model' => $model]);
}
Dalam kod, kami mula-mula membuat seketika kelas FileModel dan kemudian menyemak sama ada permintaan semasa adalah permintaan POST. Jika ia adalah permintaan POST, kami menggunakan kaedah UploadedFile::getInstance() untuk mendapatkan fail yang dimuat naik ialah nama medan borang muat naik dan nama atribut yang kami takrifkan dalam model. Kami kemudian menggunakan kaedah $model->upload() untuk mengendalikan operasi muat naik fail. Jika muat naik fail berjaya, kami akan menetapkan mesej kejayaan, jika tidak mesej ralat. Akhir sekali, kami mengembalikan fail paparan dan lulus pembolehubah $model sebagai parameter, yang akan mengandungi maklumat hasil yang dimuat naik.
Langkah terakhir untuk melaksanakan muat naik fail ialah melaksanakan kaedah $model->upload(). Berikut ialah pelaksanaan mudah kaedah $model->upload():
public function upload()
{
if ($this->validate()) { $file_path = 'uploads/' . $this->file->baseName . '.' . $this->file->extension; if ($this->file->saveAs($file_path)) { return true; } else { return false; } } else { return false; }
}
Dalam kod , Kami mula-mula menyemak sama ada fail yang dimuat naik telah disahkan. Kami kemudian membuat laluan fail untuk fail yang dimuat naik (menggabungkan nama fail dan sambungan dan menyimpannya dalam folder muat naik). Akhir sekali, kami menggunakan kaedah $this->file->saveAs() untuk menyimpan fail ke cakera. Kami akan kembali benar jika save berjaya, false sebaliknya.
2. Muat turun fail
Untuk memuat turun fail, kami perlu menyediakan pautan muat turun yang pengguna boleh klik untuk memuat turun fail. Dalam rangka kerja Yii, kita boleh melaksanakan muat turun fail dengan menggunakan objek Response. Berikut ialah kod pengawal muat turun fail yang mudah:
public function actionDownload()
{
$file_path = 'uploads/test.txt'; if(file_exists($file_path)){ return Yii::$app->response->sendFile($file_path); }else{ throw new yiiwebNotFoundHttpException('文件不存在'); }
}
Dalam kod, kami mula-mula mendapat laluan fail muat turun . Kemudian kami menyemak sama ada fail itu wujud. Jika fail itu wujud, kami menggunakan kaedah Yii::$app->response->sendFile() untuk menghantar fail kepada pengguna. Jika fail tidak wujud, kami akan membuang pengecualian.
3. Paparkan pautan fail dalam paparan
Akhir sekali, kami perlu memaparkan pautan muat naik dan muat turun fail dalam paparan. Berikut ialah contoh fail paparan ringkas:
4a249f0d628e2318394fd9b75b4636b1Contoh Muat Naik dan Muat Turun Fail473f0a7621bec819994bb5020d29372a
684271ed9684bde649abda8831d4d355Muat Naik Fail39528cedfa926ea0c01e69ef5b2ea9b0
< ;?= $this->render('_upload_form', ['model' => $model]) ?>
684271ed9684bde649abda8831d4d355Muat turun Fail39528cedfa926ea0c01e69ef5b2ea9b0
e388a4556c0f65e1904146cc1a846beeMuat turun fail: 94b3e26ee717c64999d7867364b1b4a3
Dalam kod, kami mula-mula memaparkan fail dengan memasukkan borang muat naik fail _upload_form view. Kami kemudian gunakan kaedah Url::to() untuk menjana pautan muat turun fail dan menambahkannya pada halaman Muat naik dan muat turun fail dilaksanakan dalam rangka kerja Untuk memuat naik fail, anda perlu memberikan borang muat naik dan memproses muat naik fail. Untuk memuat turun fail, anda perlu menyediakan pautan muat turun dan menggunakan objek Respons untuk melaksanakan fungsi muat turun fail Apabila melaksanakan fungsi muat naik dan muat turun fail, kami perlu mempertimbangkan kebenaran Akses dan isu-isu lain dalam aplikasi sebenar , kami perlu menangani isu ini dengan berhati-hati untuk memastikan keselamatan dan kestabilan muat naik dan muat turun fail
.Atas ialah kandungan terperinci Muat naik dan muat turun fail dalam rangka kerja Yii: melaksanakan operasi fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!