Rumah > rangka kerja php > YII > teks badan

Muat naik dan muat turun fail dalam rangka kerja Yii: melaksanakan operasi fail

PHPz
Lepaskan: 2023-06-21 08:42:03
asal
1670 orang telah melayarinya

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.

  1. Berikan borang muat naik

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']
Salin selepas log masuk

]) ?>

field($model, 'fail')->fileInput() ?>

Muat naik

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.

  1. Mengendalikan muat 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]);
Salin selepas log masuk

}

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.

  1. Mengendalikan operasi muat naik fail

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;
}
Salin selepas log masuk

}

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('文件不存在');
}
Salin selepas log masuk

}

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:

Contoh Muat Naik dan Muat Turun Fail

Muat Naik Fail

< ;?= $this->render('_upload_form', ['model' => $model]) ?>

Muat turun Fail

Muat turun fail:

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan