如何知道symfony 3上传的文件大小?

时间:2017-03-26 19:21:19

标签: php file symfony file-upload

我使用FOSRestbundle来管理我的api。我实施了一个动作来上传symfony上的文件,它运行良好。但问题是我需要获取文件大小...我的操作以这种方式获取文件:

$uploadedfile = $request->files->get('file');

这将获取我上传的所有文件的数组。

读取$ uploadedfile对象的symfony文档,有一个名为:

的方法
getClientSize()

所以我使用并且总是返回0:

$fileSize = $uploadedfile->getClientSize();

还有另一种获取文件大小的方法吗?我做错了什么?

非常感谢。

2 个答案:

答案 0 :(得分:0)

您是否已成功将文件移至目标文件夹?如果你有,你可以只调用本机php函数filesize()。

http://php.net/manual/en/function.filesize.php

答案 1 :(得分:0)

这里的解决方案怎么样?

http://symfony.com/doc/current/reference/constraints/File.html#maxsize

// src/AppBundle/Entity/Author.php
namespace AppBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    /**
     * @Assert\File(
     *     maxSize = "1024k",
     *     mimeTypes = {"application/pdf", "application/x-pdf"},
     *     mimeTypesMessage = "Please upload a valid PDF"
     * )
     */
    protected $bioFile;
}

如果你还没有这样做,你可能需要为它创建一个实体。

因此,如果您想在控制器中使用验证,您可以执行类似

的操作
// ...
use Symfony\Component\HttpFoundation\Response;
use AppBundle\Entity\Author;

// ...
public function authorAction()
{
    $author = new Author();

    // ... do something to the $author object

    $validator = $this->get('validator');
    $errors = $validator->validate($author);

    if (count($errors) > 0) {

        $errorsString = (string) $errors;

        return new Response($errorsString);
    }

    return new Response('The author is valid! Yes!');
}

您可以通过上传大于maxsize的文件来测试它,在您的给定Author实体中进行设置,在这种情况下您将收到消息“请上传有效的PDF” < / p>