如何在symfony2中获取文件大小?

时间:2015-06-04 14:38:06

标签: symfony

我使用以下代码上传通过表单提交的文件。如何在上传之前获取文件大小?我希望最大文件大小为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));
    }
}

2 个答案:

答案 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