Yii-Framework ist ein MVC-Framework, das auf der PHP-Sprache basiert. Seine Hauptmerkmale sind schnelle Entwicklung, Einfachheit und Effizienz. Bei der Website-Entwicklung sind das Hochladen und Herunterladen von Dateien eine häufige Funktion. In diesem Artikel wird erläutert, wie das Hochladen und Herunterladen von Dateien im Yii-Framework implementiert wird.
1. Datei-Upload
1. Vorbereitung
Vor dem Hochladen von Dateien müssen wir relevante Konfigurationen durchführen. Öffnen Sie die Datei config/main.php und fügen Sie der Komponente den folgenden Code hinzu:
'components' => [ 'request' => [ 'parsers' => [ 'application/json' => 'yiiwebJsonParser', 'multipart/form-data' => 'yiiwebMultipartFormDataParser', ], ], 'request' => [ 'enableCsrfCookie' => false, 'enableCsrfValidation' => false, 'parsers' => [ 'multipart/form-data' => 'yiiwebMultipartFormDataParser', ], ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], ],
Fügen Sie der Komponente zwei Anforderungsparameter hinzu, nämlich Parser und enableCsrfValidation. parsers ist der Parser der Anfrage. Das Hinzufügen von Multipart-/Formulardaten zeigt an, dass das Hochladen von Dateien zulässig ist. „enableCsrfValidation“ bedeutet, dass die CSRF-Überprüfung deaktiviert wird.
2. Datei-Upload implementieren
Datei-Upload im Controller implementieren, Sie können zwischen Formularübermittlung und Ajax-Upload wählen. Hier nehmen wir die Formularübermittlung als Beispiel.
public function actionUpload() { $uploadModel = new UploadForm(); if (Yii::$app->request->isPost) { $uploadModel->file = UploadedFile::getInstance($uploadModel, 'file'); if ($uploadModel->upload()) { // file is uploaded successfully return; } } return $this->render('upload', ['model' => $uploadModel]); }
In actionUpload wird eine Modellklasse UploadForm zum Hochladen von Dateien instanziiert. Gleichzeitig wird Yii::$app->request->isPost verwendet, um festzustellen, ob es sich um eine POST-Anfrage handelt. Wenn ja, ist dies die Methode Yii::$app->request->getInstance() Wird zum Abrufen der Dateiinformationen verwendet und ruft die Methode upload() auf, um Dateien hochzuladen. Gibt true zurück, wenn der Upload erfolgreich war, false, wenn er fehlschlägt.
Der Implementierungscode der UploadForm-Klasse lautet wie folgt:
class UploadForm extends yiiaseModel { /** * @var UploadedFile file attribute */ public $file; /** * @return array the validation rules. */ public function rules() { return [ [['file'], 'file'], ]; } public function upload() { if ($this->validate()) { $filePath = 'uploads/' . $this->file->baseName . '.' . $this->file->extension; $this->file->saveAs($filePath); return true; } else { return false; } } }
In UploadForm wird eine öffentliche Attributdatei zum Speichern hochgeladener Dateien festgelegt. Gleichzeitig wird eine Regelmethode eingerichtet, um die Datei zu überprüfen und die Datei nach bestandener Überprüfung hochzuladen. Der Pfad zum Hochladen der Datei lautet „$this->file->baseName“.
3. Datei-Download implementieren
Die Datei-Download-Funktion ist relativ einfach zu implementieren, geben Sie einfach den Dateistream direkt in den Controller zurück.
public function actionDownload($file) { Yii::$app->response->sendFile($file); }
Verwenden Sie in actionDownload die Methode Yii::$app->response->sendFile(), um den Dateistream zurückzugeben. Wobei $file der Dateipfad ist.
2. Zusammenfassung
In diesem Artikel wird erläutert, wie die Funktionen zum Hochladen und Herunterladen von Dateien im Yii-Framework implementiert werden. Dabei geht es hauptsächlich um die zugehörige Konfiguration, den Betrieb und das Design verwandter Modelle zum Hochladen und Herunterladen von Dateien. Durch das Studium dieses Artikels werden wir ein tieferes Verständnis und eine bessere Vertrautheit mit Dateioperationen im Yii-Framework erlangen und verwandte Funktionen bequemer und schneller implementieren.
Das obige ist der detaillierte Inhalt vonHochladen und Herunterladen von Dateien im Yii-Framework: Implementieren Sie dateibezogene Vorgänge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!