首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Yii 1.x 使用 CUploadedFile 處理文件上傳

     編輯:PHP 相關知識

前端表單

<form action="<?= $this->createUrl('/upload/default/upload') ?>" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="hidden" name="dir" value="<?= Yii::app()->controller->currentDir ?>" />
    <input type="submit" value="Upload Image" />
</form>

後端控制器

public function actionUpload() {
    $this->currentDir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : '';
    $image = CUploadedFile::getInstanceByName('file');
    $path = $this->uploadPath . '/' . $this->currentDir . '/' . $image->name;
    $image->saveAs($path);
    $this->redirect(['index', 'dir' => $this->currentDir]);
}

CUploadedFile 核心方法

  • getInstance($model, 'attribute'):綁定模型屬性獲取(配合 CHtml::activeFileField)。
  • getInstanceByName('inputName'):直接通過 name 獲取,無需模型。

上傳對象屬性

屬性說明
name原始文件名
size文件大小(字節)
typeMIME 類型
tempName臨時文件路徑
error上傳錯誤代碼
extensionName副檔名
hasError是否有錯誤

安全建議

  1. **驗證 MIME 與副檔名**,防止偽裝腳本上傳。
  2. **重命名存儲**(如 uniqid().'.'.$ext),避免覆蓋與路徑遍歷。
  3. **存放目錄設為不可執行**(Nginx/Apache 禁用 PHP 解析)。
  4. 模型層用 CFileValidator 限制類型、大小:['file', 'types'=>'jpg,png', 'maxSize'=>1024*1024]。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved