Symfony 4文件上传不起作用

时间:2018-06-21 07:05:36

标签: symfony symfony4

我无法在Symfony 4上读取文件。文件读取为字符串,而不是文件类型。我从此错误响应中了解了这一点。

$fileName = $this->generateUniqueFileName().'.'.$file->guessExtension();

此行返回

  

在字符串上调用成员函数guessExtension()

但我完美地设置了类型和所有内容:

我的控制器部分,用于读取值

$certificate = new Certificate();
$form = $this->createForm(CertificateType::class, $certificate);

$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {

// $file stores the uploaded PDF file
/**
 * @var UploadedFile $file
 */
$file = $certificate->getCertificatePdf();

$fileName = $this->generateUniqueFileName().'.'.$file->guessExtension();
// moves the file to the directory where brochures are stored
$file->move(
    $this->getParameter('brochures_directory'),
    $fileName
);

这是我的CertificateType类

$builder->add('certificatePdf', FileType::class);

我的实体类

/**
 * @ORM\Column(type="string")
 *
 * @Assert\NotBlank(message="Please, upload the verified certificate  as a PDF file.")
 * @Assert\File(mimeTypes={ "application/pdf" })
 */
private $certificatePdf;

public function getCertificatePdf()
{
return $this->certificatePdf;
}

public function setCertificatePdf(string $certificatePdf): self
{
$this->certificatePdf = $certificatePdf;

return $this;
}

我遵循Symfony 4.1官方文档进行创建。但是我不知道为什么它不起作用。 Link for the Documentation

1 个答案:

答案 0 :(得分:4)

尝试更换

$file = $certificate->getCertificatePdf();

使用

$file = $form->get('certificatePdf')->getData();