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']
]) ?>
= $form ->field($model, 'fail')->fileInput() ?>
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:
< ;?= $this->render('_upload_form', ['model' => $model]) ?>
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!