Symfony file upload "Error: Call to a member function getClientOriginalName() on null"
Symfony file upload "Error: Call to a member function getClientOriginalName() on null"
我正在处理带有文件上传功能的 Symfony 表单。但是,当我上传一个较小的文件时,它可以正常工作,但是对于一个较大的文件,比如 8MB 的文件,使用 getClientOriginalName() 或 guessClientExtension() 时会出现以下错误。
Error: Call to a member function getClientOriginalName() on null
这是树枝形态
<form method="post" role="form" {{form_enctype(form)}}>
{{form_widget(form.file)}}
{{form_errors(form.file) }}
{{form_rest(form)}}
<button class="btn btn-primary" type="submit">Upload</button>
</form>
IndexController.php
public function indexAction() {
$form = $this->createFormBuilder()
->add('file', 'file')
->getForm();
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
$form->bind($request);
$upload_file = $form['file']->getData();
$ext = strtolower(pathinfo($upload_file->getClientOriginalName(), PATHINFO_EXTENSION));
if (!in_array($ext, array("csv", "xlsx", "xls"))) {
$form->get("file")->addError(new FormError("Invalid file format"));
}
if ($form->isValid()) {
if ($upload_file) {
$upload_file_name = $this->getUser()->getId() . "_" . date("ymdHis") . "." . $ext;
$upload_file->move("uploads", $upload_file_name);
}
}
}
return $this->render('AppBundle:Index:index.html.twig', array('form' => $form->createView()));
}
我已将 php.ini 中的 upload_max_size 设置为 64MB,并增加了 max_execution_time。我在这里做错了什么?它适用于较小的文件,但不适用于 8MB 的文件。请帮忙。
您必须更改如下:
memory_limit = ?M
upload_max_filesize = ?M
post_max_size = ?M
如果 upload_max_filesize 大于 post_max_size,您必须增加 post_max_size 使其大于 upload_max_size。
如果post_max_size的值大于memory_limit,则必须增加memory_limit,使其大于post_max_size。
我正在处理带有文件上传功能的 Symfony 表单。但是,当我上传一个较小的文件时,它可以正常工作,但是对于一个较大的文件,比如 8MB 的文件,使用 getClientOriginalName() 或 guessClientExtension() 时会出现以下错误。
Error: Call to a member function getClientOriginalName() on null
这是树枝形态
<form method="post" role="form" {{form_enctype(form)}}>
{{form_widget(form.file)}}
{{form_errors(form.file) }}
{{form_rest(form)}}
<button class="btn btn-primary" type="submit">Upload</button>
</form>
IndexController.php
public function indexAction() {
$form = $this->createFormBuilder()
->add('file', 'file')
->getForm();
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
$form->bind($request);
$upload_file = $form['file']->getData();
$ext = strtolower(pathinfo($upload_file->getClientOriginalName(), PATHINFO_EXTENSION));
if (!in_array($ext, array("csv", "xlsx", "xls"))) {
$form->get("file")->addError(new FormError("Invalid file format"));
}
if ($form->isValid()) {
if ($upload_file) {
$upload_file_name = $this->getUser()->getId() . "_" . date("ymdHis") . "." . $ext;
$upload_file->move("uploads", $upload_file_name);
}
}
}
return $this->render('AppBundle:Index:index.html.twig', array('form' => $form->createView()));
}
我已将 php.ini 中的 upload_max_size 设置为 64MB,并增加了 max_execution_time。我在这里做错了什么?它适用于较小的文件,但不适用于 8MB 的文件。请帮忙。
您必须更改如下:
memory_limit = ?M
upload_max_filesize = ?M
post_max_size = ?M
如果 upload_max_filesize 大于 post_max_size,您必须增加 post_max_size 使其大于 upload_max_size。
如果post_max_size的值大于memory_limit,则必须增加memory_limit,使其大于post_max_size。