## 文件上传 MixPHP 的文件上传类只用于处理已经上传的文件,而对上传文件的各种限制可在 “验证器” 完成的。 ## 组件 使用 [composer]([https://www.phpcomposer.com/](https://www.phpcomposer.com/)) 安装: ~~~ composer require mix/http-message ~~~ ## 获取上传的文件 - 通过 Request 对象直接获: ``` $file = $request->getUploadedFiles()[$name] ?? null; if ($file) { $file->moveTo($targetPath); } ``` - 通过验证器验证后,自动实例化为表单类的属性 >[info] 通常情况下都会使用该方法,因为文件都需经过验证 表单验证器源码: [>> FileForm::class <<](https://github.com/mix-php/mix-skeleton/tree/v2.1/app/Api/Forms/FileForm.php) 通过表单验证器保存文件: ~~~ // 使用表单验证器 $form = new FileForm($request->getAttributes(), $request->getUploadedFiles()); $form->setScenario('upload'); if (!$form->validate()) { $content = ['code' => 1, 'message' => 'FAILED', 'data' => $form->getErrors()]; return SendHelper::json($response, $content); } // 保存文件 if ($form->file) { $targetPath = app()->basePath . '/runtime/uploads/' . date('Ymd') . '/' . $form->file->getClientFilename(); $form->file->moveTo($targetPath); } ~~~