上传 - 重新发送表单 - 附加文件 - Symfony

时间:2011-09-03 10:37:43

标签: php symfony1 doctrine symfony-1.4

我有Symfony 1.4表格:

$this->setWidget('title', new sfWidgetFormInputText());
$this->setWidget('photo', new sfWidgetFormInputFile());

如果我发送此表单,并且他有效,则显示错误的页面。在输入中,TITLE是我输入的前一个文本,但没有附加文件的链接。我必须再次搜索此文件并选择。我该如何解决?

1 个答案:

答案 0 :(得分:2)

总之,你不能。这是HTML文件输入的症状。

文件输入在客户机的机器(而不是服务器)上获取文件的本地路径,因此请考虑这个(假设的)场景:

  1. 用户A上传文件并保存文章
  2. 用户B编辑文章,文件输入预填充了用户A上传的文件的路径(但用户B的计算机上不存在该路径)。
  3. 用户B保存,未提交任何文件。
  4. 这也是一个重大的安全风险。假设您编写了一个包含表单和文件输入的恶意脚本。如果您知道客户端计算机上文件的路径,那么您可以预先填充文件输入,然后使用JavaScript提交表单以强制用户上传文件。

    这就是为什么你不能用HTML预先填充文件输入的原因。

    作为替代方案,您应该使用sfWidgetFormInputFileEditable,它将在文件输入旁边显示以前上传的图像。但是,只有在表单提交并保存成功后才会显示。