安裝擴充套件
composer require mdmsoft/yii2-upload-file
控制器實作
public function actionCreate() {
$model = new DynamicModel(['nama', 'file_id']);
// 掛載上傳行為
$model->attachBehavior('upload', [
'class' => 'mdm\upload\UploadBehavior',
'attribute' => 'file',
'savedAttribute' => 'file_id'
]);
// 驗證規則
$model->addRule('nama', 'string')
->addRule('file', 'file', ['extensions' => 'jpg, png']);
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
if ($model->saveUploadedFile() !== false) {
Yii::$app->session->setFlash('success', '上傳成功');
}
}
return $this->render('upload', ['model' => $model]);
}
視圖檔案
['enctype' => 'multipart/form-data']]); ?>
= $form->field($model, 'nama') ?>
= $form->field($model, 'file')->fileInput() ?>
file_id): ?>
= Html::img(['/file', 'id' => $model->file_id]) ?>
= Html::submitButton('送出', ['class' => 'btn btn-primary']) ?>
關鍵點說明
UploadBehavior 自動處理檔案儲存、重命名、關聯模型屬性
savedAttribute 指定儲存檔案 ID 的模型屬性
- 搭配
yii\web\UploadedFile 實現安全驗證
- 前端可整合 Dropzone.js / WebUploader 實現拖拽、進度條、多檔上傳