问题标签 [symfony-http-foundation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
162 浏览

php - 无法在 HTTP Foundation Symfony 3.3 中读取“文件”

最近我将一个 symfony 项目从 3.2 更新到 3.3。我对带有文件的简单 POST 有疑问。该文件不在http基础对象Request的filebag中。

当我查看它转储的内容时,根据请求的内容类型,我有不同的结果:

如果我application/x-www-form-urlencoded用作标题,我有这些转储:https : //pastebin.com/5HSCAgut(抱歉,pastebin 链接,输出太长)

如果我multipart/form-data用作标题,我有这些转储: https ://pastebin.com/tZdVKNgG

我的脚本有什么问题?我是否缺少新功能或安全检查?

0 投票
0 回答
153 浏览

symfony - 在 PhpStorm 中使用 Request::createFromGlobals - 警告说“在静态中找不到字段 x”

这发生在一个没有使用 Symfony 框架构建的遗留 PHP 应用程序中,只使用了 Http-Foundation 的一部分。所以没有什么为我们创建请求,而是我们在一些设置代码中使用 GLOBALS 创建它。这是作为现代化过程的一部分完成的(遵循 Paul M. Jones 的书,第 5 章:用依赖注入替换全局)。

$_GET它工作得很好,比到处都有,等要好得多$_SERVER......除了在 PhpStorm 中,每次访问 Request 对象中的字段时都会出现警告:

“在静态中找不到字段‘服务器’”

Request::createFromGlobals如果我从( )中删除 PHPDoc@return static或将其更改为 ( @return self),则 PhpStorm 将按需要工作。

或者,如果我自己使用 GLOBALS ( $request = new Request($_GET, $_POST, array(), $_COOKIE, $_FILES, $_SERVER);) 创建请求,就像createFromGlobals()正在做的那样,那么 PhpStorm 很高兴。

有没有办法在使用时解决这个问题Request::createFromGlobals()

编辑:感谢@LazyOne,解决方案是添加以下类型提示更改:

0 投票
0 回答
304 浏览

php - 响应中的 ob_start 在哪里?

如果我使用$response->send(),则执行此代码:

但是全班都没有ob_start……

向 ob 添加内容并通过 ob_end_flush 显示的另一种方法是什么?

它在这段代码中是如何工作的?

在变量$status是:

但是我在 http-foundation 的整个包中找不到“默认输出处理程序”。为什么?

0 投票
0 回答
176 浏览

php - 如何使用 HttpFoundation 获取 PUT 参数

如何使用 HttpFoundation 组件(没有 Symfony)获取PUT正文参数?根据文档Request::createFromGlobals仅关于 POST、GET ... 但不是 PUT。所以在这里我不能使用 like $request->request->all(),它将是空的。

我相信有一个更好的方法

这种方式json_decode($request->getContent(), true);返回null

请分享你的经验。

0 投票
0 回答
66 浏览

symfony - 在 Symfony2 中,有没有办法判断请求/响应何时完成?

我试图在下载完成时触发一个事件。目前,我的控制器只返回响应,但据我所知,我无法知道下载何时实际完成。

0 投票
1 回答
418 浏览

symfony - 对于 200 到 299 之间的 HTTP 状态,Response::isOk() 不应该返回 true 吗?

我正在使用 Symfony 构建 REST API。我处于想要在事件中执行一些操作的情况kernel.terminate,但我想确保在执行此操作之前已成功处理请求。

为此,由于我使用 REST 约定并且应该在发生错误时返回适当的 HTTP 状态代码,因此我想检查响应 HTTP 状态。Symfony\Component\HttpFoundation\Response::isOk()如果 HTTP 状态在 200 到 299 之间,该方法似乎比手动检查更合适且更具可读性,但它true仅在 HTTP 状态等于 200 时返回。因为我在创建资源时返回 201 状态代码,所以我不能使用它为了那个原因。

在 Github 上打开问题之前,我想知道这种方法是否有理由不返回true其他成功的 HTTP 状态?

谢谢!

0 投票
1 回答
112 浏览

php - Symfony 2.1.11 图像数据响应在响应正文的开头添加了额外的字节

我正在尝试为一个没有预算重新编写以将其升级到更现代的东西的客户复活一个旧的 Symfony 2.11 项目。其中一条路线在其响应中提供原始图像数据

保存到的图像image.jpg有效,打开并按预期工作,但是在发出请求时,响应返回相同的数据,但有一个额外的第一个字节 - 十六进制字节 -0A我如何防止添加这个额外的字节,因为它正在阻止浏览器渲染图像。

使用 Symfony 2.1.11,如果它不会花费太长时间或导致太多问题,愿意考虑升级,但这是一个非常庞大的项目,所以我担心升级显然是基于一点工作的后果在它的当前配置上。

0 投票
1 回答
2011 浏览

php - Symfony HttpFoundation获取单个文件返回null?

我使用 symfony HttpFoundation上传文件,如果我调用 FileBag 工作all(),但如果我使用get('document_name')它返回null

对于 all() 我得到以下响应:

我在这里做错了什么?有人知道为什么我无法使用get()方法获取单个文件吗?我在 symfony 文档中发现$request->files->get('document')应该可以工作...

0 投票
0 回答
913 浏览

php - Symfony 二进制文件响应在下载过程结束时失败

我通常不会在 Stack Overflow 上发布任何问题,因为无论遇到什么问题,我总能找到答案。但是在这里,我还没有找到一个明确的答案,所以如果你能帮助我,非常感谢!

我正在开发一个 Symfony 3.4 网站。我在控制器中创建了一个脚本,以将文件作为 BinaryFileResponse 返回。

起初,下载过程正常,但到最后,出现错误。Chrome 返回“网络错误”故障,下载的文件保留为.crdownload而不是在我的情况下重命名为.mp3 。(注意:如果我手动将文件重命名为.mp3,它可以正确播放。)

我已经在标题的 content-length 属性上搜索了一个可能的问题,但是当我在此处检查 Symfony Profiler Capture时,它​​似乎被正确发送

我找到了一种通过使用 Symfony 文档中提到的流来绕过此错误的方法,如下所示:

我的文件由 PHP 脚本提供,但不是由它生成的。有没有办法将它作为静态文件而不是流来提供?

使用流解决方案,客户端看不到文件的实际大小,这对用户来说不是很友好。此外,它真的很慢。

谢谢你的帮助 !

编辑:第一个解决方案适用于本地主机,但不适用于生产服务器。

0 投票
1 回答
315 浏览

php - Symfony/Http-foundation 组件如何处理 Http 请求和响应

我被分配到一个需要包含 Symfony 组件以重新组织其业务逻辑的项目。但是,我在查看 Symfony HTTP 基础文档时感到困惑。希望这里有人能帮我解释一下这个组件如何处理用户的 Http 请求和响应。

基本上,我在项目中所做的是:

  1. 拥有一个 PHP 页面会使用请求的 URL 和方法创建 Request 对象

  2. 使用 ApiRouter 将代码定向到所需的控制器

  3. 在控制器中,它将 HTTP 请求发送到服务器,并根据请求 URL 将响应转换为 Symfony 响应对象。

位置.php

ApiRouter.php

我希望知道的是我对逻辑的理解是否正确?以及 Request:createFromGlobal 方法是什么意思,这个和 Request:create(URL) 有什么区别

如果我的问题需要更具体,请告诉我。