CakePHP 文件上传
cakephp 文件上传
为了处理文件上传,我们将使用表单助手。这是一个文件上传示例。
示例
在config/routes.php文件中进行修改,如下程序所示。
config/routes.php
use cake\http\middleware\csrfprotectionmiddleware; use cake\routing\route\dashedroute; use cake\routing\routebuilder; $routes--->setrouteclass(dashedroute::class); $routes->scope('/', function (routebuilder $builder) { $builder->registermiddleware('csrf', new csrfprotectionmiddleware([ 'httponly' => true, ])); $builder->applymiddleware('csrf'); //$builder->connect('/pages',['controller'=>'pages','action'=>'display', 'home']); $builder->connect('fileupload',['controller'=>'files','action'=>'index']); $builder->fallbacks(); });
在 src/controller/filescontroller.php 中创建一个 filescontroller.php 文件。 将以下代码复制到控制器文件中。忽略(如果已创建)。
在 src/中创建 uploads/目录。上传的文件将保存在uploads/文件夹中。
src/controller/filescontroller.php
namespace app\controller; use app\controller\appcontroller; use cake\view\helper\formhelper; class filescontroller extends appcontroller { public function index(){ if ($this--->request->is('post')) { $fileobject = $this->request->getdata('submittedfile'); $uploadpath = '../uploads/'; $destination = $uploadpath.$fileobject->getclientfilename(); // existing files with the same name will be replaced. $fileobject->moveto($destination); } } } ?>
在 src/template 中创建一个目录 files,然后在该目录下创建一个名为 index.php 的 view 文件。 b> 在该文件中复制以下代码。
src/template/files/index.php
echo $this--->form->create(null, ['type' => 'file']); echo $this->l;form->file('submittedfile'); echo $this->form->button('submit'); echo $this->form->end(); $uploadpath ='../uploads/'; $files = scandir($uploadpath, 0); echo "files uploaded in uploads/ are: "; for($i = 2; $i < count($files); $i++) echo "file is-".$files[$i]." "; ?>
为用户列出了保存在uploads/文件夹中的文件。通过访问以下 url 执行上述示例:
http://localhost/cakephp4/fileupload:
输出
当你执行上面的代码时,你应该看到下面的输出: