使用twig和Slim框架(版本2)上传文件 – PHP
发布时间:2020-12-13 17:52:33 所属栏目:PHP教程 来源:网络整理
导读:我正在使用UserFrosting一个用户管理系统,我在通过表单发布文件时遇到一些麻烦,这就是我试过的 这就是我的twig文件的样子. form name="eveniment" method="post" action="{{form_action}}" enctype="multipart/form-data" ... input type="file" class="form
我正在使用UserFrosting一个用户管理系统,我在通过表单发布文件时遇到一些麻烦,这就是我试过的
这就是我的twig文件的样子. <form name="eveniment" method="post" action="{{form_action}}" enctype="multipart/form-data"> ... <input type="file" class="form-control" name="poza" id="poza"> ... </form>` 这就是我的控制器的样子 $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["poza"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // Check if image file is a actual image or fake image $check = getimagesize($_FILES); if($check !== false) { $ms->addMessage("success","File is an image - " . $check["mime"] . "."); $uploadOk = 1; } else { $ms->addMessage("danger","File is not an image."); $uploadOk = 0; } $ms->addMessage("success",$target_file); // Check if file already exists if (file_exists($target_file)) { $ms->addMessage("danger","Sorry,file already exists."); $uploadOk = 0; } // Check file size if ($_FILES["poza"]["size"] > 500000) { $ms->addMessage("danger",your file is too large."); $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { $ms->addMessage("danger",your file was not uploaded."); // if everything is ok,try to upload file } else { if (move_uploaded_file($_FILES["poza"]["name"],$target_file)) { $ms->addMessage("success","The file ". basename( $_FILES["poza"]["name"]). " has been uploaded."); } else { $ms->addMessage("danger",there was an error uploading your file."); } } 路线 $app->post('/evenimente/?',function () use ($app) { $controller = new UFEvenimentController($app); return $controller->createEveniment(); }); PHP配置 file_uploads开 upload_max_filesize 128M 除了具有type =“file”的输入外,其他每个输入都会成功发布. 我没有任何错误,我尝试了不同的方法,但没有成功.此外,如果我打印$_FILES [“poza”] [“name”]它将为空.
这个答案假设你正在使用UserFrosting,因为你在UserFrosting Gitter聊天中链接了这个问题.
UserFrosting包括CSRFGuard中间件,以确保所有POST请求都在本地发起.您需要包含CSRF令牌以确保中间件不会阻止POST请求. 由于令牌已经在Twig全局变量中,最简单的方法是使用带有CSRF令牌的隐藏表单字段: <input type="hidden" name="{{csrf_key}}" value="{{csrf_token}}"> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |