gpt4 book ai didi

php - Symfony2 限制最终用户只上传 csv 文件

转载 作者:行者123 更新时间:2023-12-04 18:06:25 27 4
gpt4 key购买 nike

在我的 symfony2 应用程序中,我使用的是 doctrine,我希望用户只上传 csv 文件。

下面是我在实体文件中设置的用于验证的代码:

use Symfony\Component\Validator\Constraints as Assert;

/**
* @var string
* @Assert\File( maxSize = "1024k", mimeTypes = {"text/csv"}, mimeTypesMessage = "Please upload a valid CSV File")
* @ORM\Column(name="filename", type="string", length=255)
*/
private $filename;

但仍然不允许我上传 csv 文件。

最佳答案

在您的评论之后:“文件的 MIME 类型无效(“text/plain”)。允许的 MIME 类型为“text/csv”

经过一些搜索,Symfony 2 正在使用 finfo()功能。你可以阅读Php doesn't return the correct mime type :

Pekka 웃: “我不是很熟悉 fileinfo 的工作原理,但我认为这是正常的。文本文件(这就是 CSS 和 JS)没有提供明确的指针来说明它有什么内容。它们没有 header 字节,没有定义的结构。所以所有糟糕的文件信息只能猜测 - 结果很差,如您所见。

我认为要成功验证 .js 和 .css 文件的内容,您必须依赖扩展名,或者使用正确、适当的解析器实际解析它们。”

所以这不是错误,唯一的方法是实现您自己的逻辑(在您的 FormBuilder 中)或者像 tutty 所说的那样您可以创建自定义约束。

编辑:

根据您的评论,这里是使用 Symfony 2 finfo() 的地方: Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php

关于php - Symfony2 限制最终用户只上传 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25500452/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com