如何将 mimeType Assert 与 VichUploader 一起使用?

2024-01-07

当使用以下命令上传任何文件时,此断言会通过 Symfony 的表单验证VichUploaderBundle http://github.com/dustin10/VichUploaderBundle:

/**
 * @Vich\UploadableField(mapping="product_media", fileNameProperty="path")
 * @Assert\File(
 *     mimeTypes = {"image/jpeg", "image/gif", "image/png", "video/mp4", "video/quicktime", "video/avi"},
 *     mimeTypesMessage = "Wrong file type (jpg,gif,png,mp4,mov,avi)"
 * )
 * @var File $pathFile
 */
protected $pathFile;

我看不出断言有什么问题。如何使用 VichUploader 验证文件类型?


对于 Symfony 4.0,您需要导入 Validator 组件

composer require validator

现在,在您的实体类中,您可以使用 @Assert 注释。

// src/Entity/Author.php

// ...
use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    /**
     * @Assert\NotBlank()
     */
    public $name;
}

您可能需要在 config/packages/framework.yaml 文件中添加一些配置。不管怎样,这一切在 Symfony 官方文档中都有完美的解释。

http://symfony.com/doc/current/validation.html http://symfony.com/doc/current/validation.html

要检查 mime 类型,您需要使用文件约束http://symfony.com/doc/current/reference/constraints/File.html http://symfony.com/doc/current/reference/constraints/File.html

这是一个工作示例

/**
 * @ORM\Column(type="string", length=255)
 * @var string
 */
private $cvFilename;

/**
 * @Assert\File(
 *     maxSize = "2048k",
 *     mimeTypes = {"application/pdf", "application/x-pdf"},
 *     mimeTypesMessage = "Please upload a valid PDF"
 * )
 * @Vich\UploadableField(mapping="cv", fileNameProperty="cvFilename")
 * @var File
 */
private $cvFile;

现在 @Vich\UploadableField 注释中确实有一个 mime 和 size 选项,如此处所述https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to-an-entity https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to-an-entity但我无法让它发挥作用。

@Assert 注释将生成 Forms 错误,您可以在 Twig 中检索它们以提供反馈。

关键是使用:form_errors(candidature_form.cvFile)

这是一个工作示例:

 {% set error_flag = form_errors(candidature_form.cvFile) %}

        <label class=" {% if error_flag %}has-error{% endif %}">
            Curriculum Vitae (PDF)
        </label>
        {{ form_widget(candidature_form.cvFile) }}
        {% if error_flag %}
            <div class="has-error">
                {{ form_errors(candidature_form.cvFile) }}
            </div>
        {% endif %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 mimeType Assert 与 VichUploader 一起使用? 的相关文章

随机推荐