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

2023-11-24

我正在使用 UserFrosting 一个用户管理系统,但在通过表单发布上传文件时遇到一些问题,这就是我尝试过的

这就是我的树枝文件的样子。

<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", "Sorry, your file is too large.");
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    $ms->addMessage("danger", "Sorry, 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",  "Sorry, there was an error uploading your file.");
    }
}

Route

$app->post('/evenimente/?', function () use ($app) {
    $controller = new UF\EvenimentController($app);
    return $controller->createEveniment();
});

PHP配置

file_uploads On

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}}">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 twig 和 Slim 框架上传文件(版本 2)- PHP 的相关文章

随机推荐

  • Facebook Like 按钮导致水平滚动条

    我最近在我的网站上添加了一个类似 facebook 的按钮 它会导致在不需要时出现水平滚动条 它不会出现在 Chrome 中 但会出现在 Firefox 和 IE 中 我已经检查了 Firebug 中创建的代码 但看不出出了什么问题 这是该
  • 量角器 browser.actions().mouseMove() 不显示悬停效果

    我是量角器新手 尝试为默认情况下关闭的滑块面板添加 测试 并将鼠标悬停在其上将打开它 然后滑块面板上有一个项目列表可供选择 div class slider 我尝试了多种方法 但没有一个有效 第一次尝试 没有悬停效果 即不执行任何操作 br
  • 引导类路径未与 -source 1.6 一起设置

    我正在将我的应用程序从 java 1 6 升级到 1 7 当我尝试使用 Maven 3 2 1 进行构建时 我的构建失败并显示以下错误消息 ERROR Failed to execute goal org apache maven plug
  • HBase 如何跨区域服务器对表进行分区?

    请告诉我 HBase 如何跨区域服务器对表进行分区 例如 假设我的行键是从 0 到 10M 的整数 并且我有 10 个区域服务器 这是否意味着第一个区域服务器将存储键值为 0 10M 的所有行 第二个 1M 2M 第三个 2M 3M 第十个
  • 使用 jquery 将数据发送到 MVC 控制器

    我有一个 ASP NET MVC3 应用程序 当用户单击我的锚标记时 我想将 3 条数据发送到操作 a a 这是调用我的操作的 javascript function editDescription docId fileName descr
  • curl 命令返回 http/1.1 406 不可接受的错误

    我使用下面的命令行curl来了解我的网站是否支持压缩和缓存 curl head compress http www mysite com 它返回以下结果 Http 1 1 406 Not Acceptable Date Wed 28 Dec
  • sed 打印替换行两次

    我正在运行以下命令 find home debajdas checkout name pom xml or name properties xargs sed i s 10 0 0 0 3 10 0 0 0 4 gpw changes 但它
  • 为什么我导入的 PNG 质量这么低

    我在做 android background drawable mobile vforum bg 在 main xml 文件中设置 BG 它可以工作 只是在模拟器上查看时图像质量非常差 它是 320x480 的 PNG 96dpi 低 中和
  • 完成脚本后关闭电脑

    我正在 R 中运行一个脚本 需要花费很多小时 我希望我的电脑在完成脚本后自动关闭 那可能吗 我怎样才能使用 R 做到这一点 我已经搜索了相关的包和函数 但找不到 谢谢 附 我的电脑运行 Windows 8 1 您可以直接从 R 调用 cmd
  • java中的PreparedStatement.addBatch有什么限制吗?

    我正在尝试优化将大量结果插入远程 mySQL 数据库的过程 我为此使用简单的 jdbc 目前 我正在用PreparedStatement替换现有语句 并用addBatch executeBatch方法替换执行方法 有谁知道批量执行的限制是什
  • ASP.Net 中的持久动态控制

  • 没有协议的链接是有效的 XHTML 吗?即

    具有以下形式的链接是否有效的 XHTML 良好实践 www example com foo bar html 如果当前页面是HTTP 则链接指向 http www example com foo bar html如果当前页面受 HTTPS
  • Android Visualizer FFT/波形受设备音量影响吗?

    我正在使用 Android 2 3 1 上的 Visualizer 类进行一些音乐分析 我发现 FFT 和波形幅度受设备体积的影响 这意味着如果用户调低音量 我会收到很少或根本没有 FFT 数据 我已经在 Motorola Xoom Sam
  • 将多个 DB/mongoose 查询的结果渲染到 express.js 中的视图

    考虑到猫鼬 或sequelize或redis 查询的异步性质 当您在渲染视图之前需要进行多个查询时 您会怎么做 例如 您有一个user id在会话中 并且想要通过以下方式检索有关该特定用户的一些信息findOne 但您还想显示最近登录的用户
  • 如何使用 Selenium 测试模式对话框?

    我正在开始硒集成开发环境并尝试测试一个充满模式对话框的网络应用程序 window showModalDialog 记录测试似乎有效 除了弹出对话框时日志中没有任何内容 但它们无法正常播放 该脚本实际上打开了窗口 通过单击按钮触发 但随后只是
  • Eclipse 在每次保存时构建所有类

    我的工作区中有一个大型项目 每次我保存 jsp 或任何文件 java txt 属性等 时 构建都会运行 构建大约需要 30 到 45 秒 我恨它 我无法像这样高效工作 这种情况最近才开始发生 我一直启用自动构建 这不会导致此问题 办公室里的
  • 为什么当我在此处将 CREATE PROCEDURE 语句与 IF 语句一起使用时,它会失败?

    我试图删除存储过程 如果存在 然后通过以下方式创建它 IF OBJECT ID dbo myStoredProc IS not NULL DROP PROCEDURE dbo myStoredProc CREATE PROCEDURE db
  • 将 PHP cURL 请求从 SSLv3 更新为 TLS..?

    因为最近在 SSLv3 中发现的漏洞 许多网络服务提供商 即 PayPal Facebook Google 正在禁用该功能 并希望我们改用 TLS 我在弄清楚如何执行此操作时遇到了一些麻烦 我目前正在使用以下函数来处理我的 cURL 请求
  • 添加事件监听器到事件监听器添加的表单元素

    我正在构建一个 Symfony 应用程序 并使用表单事件和一些 jquery ajax 来完成整个 状态 地点 的事情 不过 我有一个小问题 我使用的格式是省 gt 城市 gt 郊区 现在 据我所知 我的代码很好 但是当执行到达我向 城市
  • 使用 twig 和 Slim 框架上传文件(版本 2)- PHP

    我正在使用 UserFrosting 一个用户管理系统 但在通过表单发布上传文件时遇到一些问题 这就是我尝试过的 这就是我的树枝文件的样子