首页 > 解决方案 > 如何使用 Symfony 4 上传音乐

问题描述

首先,我为我的英语道歉...

我的音乐上传有问题。感谢 Symfony Doc,我发现如何上传文件并成功设置图片上传。但是我发现我的音乐上传有问题,我的控制器中的转储向我显示错误并告诉我我的文件超过 2M,但在我的文件 php.ini 中,upload_max_filesize 定义为 256M。我上传音乐的代码与图片相同。

我的代码:

namespace App\Form;

use App\Entity\Artist;
use App\Entity\Category;
use App\Entity\Music;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints\File;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FileType;

class MusicType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title')
            ->add('description')
            ->add('picture', FileType::class, [
                'mapped' => false,
                'required' => false,
                'constraints' => [
                    new File([
                        'maxSize' => '8M',
                        'mimeTypes' => [
                            'image/jpeg',
                            'image/png',
                            'image/webp'
                        ]
                    ])
                ],
                'attr' => [
                    'accept'=>'.jpg, .jpeg, .png, .gif'
                ]
            ])
            ->add('music', FileType::class, [
                'mapped' => false,
                'constraints' => [
                    new File([
                        'maxSize' => '256M',
                        'mimeTypes' => [
                            'application/octet-stream',
                            'audio/mpeg',
                            'audio/mp3'
                        ]
                    ])
                ]
            ])

我一直在寻找解决方案,但所有结果都让我回到https://symfony.com/doc/current/reference/constraints/File.html#maxsize

如果你有想法,我很感兴趣。

标签: phpfile-uploadsymfony4

解决方案


首先你需要检查 php.ini 中的 post_max_size。

upload_max_filesize 是任何单个文件的限制。post_max_size 是整个请求体的限制,可以包括多个文件。

确保 post_max_size >= upload_max_size

请参阅有关此的先前答案。

PHP post_max_size 覆盖upload_max_filesize


推荐阅读