Yii文件上傳

可以使用  yii\web\UploadedFile 、模型和 yii\widgets\ActiveForm 輕鬆地實現文件上傳功能。

在根文件夾創建一個「uploads」 的上傳目錄。這個目錄將保存所有上傳的圖片。要上傳一個文件,需要創建一個模型和模型上傳文件實例的屬性。還應該驗證文件上傳。

第1步 - 在 models 文件夾中,創建一個 UploadImageForm.php 文件並使用以下代碼內容。

false, 'extensions' => 'jpg, png'\], \]; } public function upload() { if ($this->validate()) { $this->image->saveAs('../uploads/' . $this->image->baseName . '.' . $this->image->extension); return true; } else { return false; } } } ?>

 

 image 屬性用於保持文件的實例。這裏文件驗證規則是確保文件有一個 PNG 或 JPG 格式擴展名。upload()函數驗證該文件並將其保存在服務器上。

第2步 - 現在,添加 actionLoadImage() 方法到 SiteController。

public function actionUploadImage() {
$model = new UploadImageForm();
if (Yii::$app->request->isPost) {
$model->image = UploadedFile::getInstance($model, 'image');
if ($model->upload()) {
// file is uploaded successfully
echo "File successfully uploaded";
return;
}
}
return $this->render('upload', ['model' => $model]);

第3步 - 當表單提交,調用yii\web\UploadedFile::getInstance()函數來表示上傳的文件作爲 UploadedFile 的實例。然後,我們驗證文件並將其保存在服務器上。

第4步 - 接下來,在 views/site 目錄內創建一個視圖文件 upload.php 。

\['enctype' => 'multipart/form-data'\]\])?> field($model, 'image')->fileInput() ?>


 

記住上傳文件時表單頭需要添加 enctype 選項。fileInput() 方法輸出以下HTML代碼-

上面的HTML代碼,允許用戶選擇和上傳文件。

第5步 - 訪問  http://localhost:8080/index.php?r=site/upload-image, 會看到下面的輸出結果:
Yii文件上傳

第6步- 選擇要上傳的圖片,並點擊「提交」按鈕。該文件將保存在服務器上的 「uploads」 文件夾內。
Yii文件上傳