我使用以下代码上传通过表单提交的文件。如何在上传之前获取文件大小?我希望最大文件大小为20mb。
$file = $data->getFileName();
if ($file instanceof UploadedFile) {
$uploadManager = $this->get('probus_upload.upload_manager.user_files');
if ($newFileName = $uploadManager->move($file)) {
$data->setFileName(basename($newFileName));
}
}
答案 0 :(得分:5)
Oldskool是正确的。但是,如果要在上载文件后检索确切的文件大小,可以使用以下命令:
$fileSize = $file->getClientSize();
另一个解决方案是在php.ini中更改上传文件的最大大小。以下内容将回显当前文件大小限制。
echo $file->getMaxFilesize();
要获得表单错误,您应验证表单并在验证失败时打印任何错误。
//include at the top of controller
use Symfony\Component\HttpFoundation\Response;
$form = $this->createForm(new FileType(), $file);
$form->handleRequest($request);
if ($form->isValid()) {
//store data
$data = "stored successfully";
$statusCode = 200;
} else {
//return errors if form is invalid
$data = $form->getErrors();
$statusCode = 500;
}
return new Response($data, $statusCode);
答案 1 :(得分:2)
只需使用maxSize
选项注释实体中的File对象:
/**
* @Assert\File(
* maxSize = "20M"
* )
*/
protected $userFiles;
有关详细信息,另请参阅documentation。