使用twig和Slim框架(版本2)上传文件 – PHP

前端之家收集整理的这篇文章主要介绍了使用twig和Slim框架(版本2)上传文件 – PHP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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 UF\EvenimentController($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}}">

猜你在找的PHP相关文章