Symfony 2:AJAX 文件上传的文件限制
Symfony 2: File constrains on a AJAX file upload
我已经创建了正常的 Symfony 表单。但是,我需要上传额外的文件(照片、证书),这些文件由 AJAX 处理,并且不会通过 Symfony 表单检索。
相反,文件上传是通过文件包在单独的控制器操作中处理的。
我想限制最大文件大小(仅针对此操作)。
如果上传是由经典形式处理的,我会使用 file constraint
但是这样我现在不知道如何应用它。
我通过 UploadedFile 上的方法检查 mime 类型和成功上传,但是检索大小的方法的文档在某种程度上令人沮丧 (UploadedFile#method_getClientSize)。
有没有办法在没有表单的情况下使用 FileValidator/File 约束?
我从 FileValidator 的实际实现中得到启发:
$file = $request->files->get('file');
$path = $file->getPathname();
$size = round(filesize($path) / 1000000, 2);
$limit = (int) $constraint->maxSize;
if ($size > $limit) {
//Add violation
}
此解决方案有效,并且可能比使用 getClientSize() 更好。
我已经创建了正常的 Symfony 表单。但是,我需要上传额外的文件(照片、证书),这些文件由 AJAX 处理,并且不会通过 Symfony 表单检索。 相反,文件上传是通过文件包在单独的控制器操作中处理的。
我想限制最大文件大小(仅针对此操作)。 如果上传是由经典形式处理的,我会使用 file constraint 但是这样我现在不知道如何应用它。
我通过 UploadedFile 上的方法检查 mime 类型和成功上传,但是检索大小的方法的文档在某种程度上令人沮丧 (UploadedFile#method_getClientSize)。
有没有办法在没有表单的情况下使用 FileValidator/File 约束?
我从 FileValidator 的实际实现中得到启发:
$file = $request->files->get('file');
$path = $file->getPathname();
$size = round(filesize($path) / 1000000, 2);
$limit = (int) $constraint->maxSize;
if ($size > $limit) {
//Add violation
}
此解决方案有效,并且可能比使用 getClientSize() 更好。