Symfony HttpFoundation 获取单个文件 returns null?
Symfony HttpFoundation get single file returns null?
我使用 symfony HttpFoundation 上传文件,如果我调用 all()
,FileBag 工作,但如果我使用 get('document_name')
它 return null
.
use Symfony\Component\HttpFoundation\Request;
public function saveFileAction(Request $request) {
dump($request->files->all());
dump($request->files->get('document'));
}
对于 all() 我得到以下响应:
FileController.php on line 175:
array:1 [▼
"form" => array:1 [▼
"document" => UploadedFile {#14 ▶}
]
]
我这里做错了什么?有人知道为什么我无法使用 get()
方法获取单个文件吗?我在 symfony 文档中发现 $request->files->get('document')
应该可以工作...
$request->files->get("document")
如果 POST 字段确实如此命名,则
$request->files->get("document")
是正确的。 (请与您的浏览器的网络检查器确认。)我怀疑该字段的名称不同,或者这个 会 工作。
如果它来自托管表单 class 中的文件输入,您应该改为使用 $form->get("document")->getData();
来检索您的 UploadedFile
实例。根据您在评论中提到的 form[document]
名称和 $request->files->all()
的输出进行猜测,很可能是这种情况。
如果你真的需要从请求属性中读取它,你需要使用 $request->files->get("form[document]");
因为 Symfony 在从请求属性中原始读取它时不会扩展类似数组的表单输入名称。如果您有一个文本框输入,这也是一样的,您必须使用 $request->request->get("form[firstName]");
阅读它,但正如我提到的,您应该正确使用托管表单 class 方式 $form->get("document")->getData();
如果这真的是一种托管形式。 (Symfony 已经提前为您想到了这一点,包括将输入答案级联到验证规则和数据模型。)
否则我很想知道您首先是如何上传此表单的。 (是AJAX吗?)
我使用 symfony HttpFoundation 上传文件,如果我调用 all()
,FileBag 工作,但如果我使用 get('document_name')
它 return null
.
use Symfony\Component\HttpFoundation\Request;
public function saveFileAction(Request $request) {
dump($request->files->all());
dump($request->files->get('document'));
}
对于 all() 我得到以下响应:
FileController.php on line 175:
array:1 [▼
"form" => array:1 [▼
"document" => UploadedFile {#14 ▶}
]
]
我这里做错了什么?有人知道为什么我无法使用 get()
方法获取单个文件吗?我在 symfony 文档中发现 $request->files->get('document')
应该可以工作...
$request->files->get("document")
如果 POST 字段确实如此命名,则
$request->files->get("document")
是正确的。 (请与您的浏览器的网络检查器确认。)我怀疑该字段的名称不同,或者这个 会 工作。
如果它来自托管表单 class 中的文件输入,您应该改为使用 $form->get("document")->getData();
来检索您的 UploadedFile
实例。根据您在评论中提到的 form[document]
名称和 $request->files->all()
的输出进行猜测,很可能是这种情况。
如果你真的需要从请求属性中读取它,你需要使用 $request->files->get("form[document]");
因为 Symfony 在从请求属性中原始读取它时不会扩展类似数组的表单输入名称。如果您有一个文本框输入,这也是一样的,您必须使用 $request->request->get("form[firstName]");
阅读它,但正如我提到的,您应该正确使用托管表单 class 方式 $form->get("document")->getData();
如果这真的是一种托管形式。 (Symfony 已经提前为您想到了这一点,包括将输入答案级联到验证规则和数据模型。)
否则我很想知道您首先是如何上传此表单的。 (是AJAX吗?)