加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用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}}">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读