yii2中如何在控制器中保存$_FILES上传的文件
时间: 2023-05-17 13:04:26 浏览: 169
在Yii2中,可以使用以下代码在控制器中保存$_FILES上传的文件:
```php
// 获取上传文件对象
$file = UploadedFile::getInstanceByName('file');
// 生成新的文件名
$fileName = Yii::$app->security->generateRandomString() . '.' . $file->getExtension();
// 保存文件到指定目录
$file->saveAs('/path/to/save/' . $fileName);
```
其中,`UploadedFile::getInstanceByName('file')`用于获取上传文件对象,`Yii::$app->security->generateRandomString()`用于生成新的文件名,`$file->getExtension()`用于获取文件扩展名,`$file->saveAs('/path/to/save/' . $fileName)`用于将文件保存到指定目录。
相关问题
写一段yii2 上传xecel文件并保存的代码
好的,以下是一段 Yii2 上传 Excel 文件并保存的代码:
// 在控制器中处理上传文件的操作
public function actionUploadExcel()
{
$model = new ExcelModel();
if (Yii::$app->request->isPost) {
$model->excelFile = UploadedFile::getInstance($model, 'excelFile');
if ($model->upload()) {
// 上传成功,保存文件并处理数据
$filePath = $model->getFilePath();
$excelData = $this->processExcelData($filePath);
// 保存数据到数据库
$this->saveExcelData($excelData);
return $this->redirect(['index']);
}
}
return $this->render('uploadExcel', ['model' => $model]);
}
// ExcelModel 模型类
class ExcelModel extends \yii\base\Model
{
public $excelFile;
public function rules()
{
return [
[['excelFile'], 'file', 'extensions' => 'xls, xlsx'],
];
}
public function upload()
{
if ($this->validate()) {
$this->excelFile->saveAs($this->getFilePath());
return true;
} else {
return false;
}
}
public function getFilePath()
{
return Yii::getAlias('@webroot') . '/uploads/' . $this->excelFile->baseName . '.' . $this->excelFile->extension;
}
}
// 处理 Excel 数据的方法
private function processExcelData($filePath)
{
// 使用 PHPExcel 库读取 Excel 文件
$objPHPExcel = \PHPExcel_IOFactory::load($filePath);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
// 处理数据
$excelData = [];
foreach ($sheetData as $row) {
$rowData = [];
foreach ($row as $cell) {
$rowData[] = $cell;
}
$excelData[] = $rowData;
}
return $excelData;
}
// 保存 Excel 数据到数据库的方法
private function saveExcelData($excelData)
{
// 将数据保存到数据库
// ...
}
希望这段代码能够帮助到你!
阅读全文