我使用FOSRestbundle来管理我的api。我实施了一个动作来上传symfony上的文件,它运行良好。但问题是我需要获取文件大小...我的操作以这种方式获取文件:
$uploadedfile = $request->files->get('file');
这将获取我上传的所有文件的数组。
读取$ uploadedfile对象的symfony文档,有一个名为:
的方法getClientSize()
所以我使用并且总是返回0:
$fileSize = $uploadedfile->getClientSize();
还有另一种获取文件大小的方法吗?我做错了什么?
非常感谢。
答案 0 :(得分:0)
您是否已成功将文件移至目标文件夹?如果你有,你可以只调用本机php函数filesize()。
答案 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>