【问题标题】:How to limit the upload size in Symfony?如何限制 Symfony 中的上传大小?
【发布时间】:2019-01-04 00:06:21
【问题描述】:

php.net 上记录了如何在表单中限制上传文件的大小,在客户端。这可以在任何服务器端约束之外完成

    <!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

MAX_FILE_SIZE 隐藏字段(以字节为单位)必须位于 文件输入字段,它的值是接受的最大文件大小 php。应始终使用此表单元素,因为它可以为用户节省 等待传输大文件的麻烦只是发现 它太大,传输失败。请记住:愚弄这个 在浏览器端设置非常简单,所以不要依赖文件 此功能阻止了更大的尺寸。它只是一个 为应用程序客户端的用户提供便利功能。 但是,最大大小的 PHP 设置(在服务器端), 不能被愚弄。

在 Symfony 中有没有一种方便的方法来做到这一点?

例如 Symfony\Component\Form\Extension\Core\Type\FileType。

让我们为各种版本的 Symfony 回答这个问题,因为我无法通过 Google 找到相关内容。

【问题讨论】:

  • 文件验证约束 - 4.1, 3.4, 2.8
  • 此外,在 Google 中搜索“symfony max file size”会显示上述文档作为结果 #2。
  • 这将限制表单提交后的大小。但是如果大小太大, $_POST 字段为空 $request->request 无论如何都包含输入。 for 已提交。但它没有验证。但是,在此之后呈现表单时,所有输入值都丢失了。
  • 如果您的服务器配置阻止上传请求被处理,您希望 Symfony 如何验证文件的大小?
  • 我明白了。我误解了你的问题。然而,像这样的客户端提示很容易被绕过,所以不应该专门使用。您还需要其他检查。

标签: php symfony


【解决方案1】:

使用 File constraint 中的带有 maxSize 选项的 FileType 字段

【讨论】:

  • 抱歉,您好像误解了这个问题。在问题的 cmets 中讨论了为什么 File 约束不符合我的要求。
【解决方案2】:

这样做:

{
/**
 * @Assert\File(
 *     maxSize = "1024k",
 * )
 */
protected $File;

}

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 2010-12-18
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2012-11-02
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多