【问题标题】:upload - resend form - attach files - Symfony上传 - 重新发送表单 - 附加文件 - Symfony
【发布时间】:2011-09-03 10:37:43
【问题描述】:
我有 Symfony 1.4 的形式:
$this->setWidget('title', new sfWidgetFormInputText());
$this->setWidget('photo', new sfWidgetFormInputFile());
如果我发送此表格,并且他有效,则显示错误页面。在输入 TITLE 是我输入的以前的文本,但没有附加文件的链接。我必须再次搜索此文件并选择。我该如何解决?
【问题讨论】:
标签:
php
symfony1
doctrine
symfony-1.4
【解决方案1】:
简而言之,你不能。这是 HTML 文件输入的症状。
文件输入采用客户端机器(而不是服务器)上文件的本地路径,因此请考虑以下(假设的)场景:
- 用户 A 上传文件并保存文章
- 用户 B 编辑文章,文件输入预填充了用户 A 上传的文件的路径(但用户 B 的计算机上不存在该路径)。
- 用户 B 保存,没有文件提交。
这也将是一个重大的安全风险。假设您编写了一个包含表单和文件输入的恶意脚本。如果您知道客户端计算机上文件的路径,那么您可以预先填充文件输入,然后使用 JavaScript 提交表单以强制用户上传文件。
这就是您无法在 HTML 中预填充文件输入的原因。
作为替代方案,您应该使用sfWidgetFormInputFileEditable,它将在文件输入旁边显示之前上传的图像。但是,只有在表单提交并成功保存后才会显示。