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

发布于 2024-12-03 01:45:37 字数 252 浏览 1 评论 0原文

我有 Symfony 1.4 表单:

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

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

I have in Symfony 1.4 form:

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

if i send this form, and he is valid then show me page with error. In input TITLE is previous text, which i entered, but no link to attach files. I must again search this file and select. How can i fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆离笙 2024-12-10 01:45:37

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

文件输入采用客户端计算机(而不是服务器)上文件的本地路径,因此请考虑以下(假设的)场景:

  1. 用户 A 上传文件并保存文章
  2. 用户 B 编辑文章,并且文件输入是预先定义的填充用户 A 上传的文件的路径(但该路径在用户 B 的计算机上不存在)。
  3. 用户B保存,没有提交文件。

这也将是一个重大的安全风险。假设您编写了一个包含表单和文件输入的恶意脚本。如果您知道客户端计算机上文件的路径,那么您可以预先填充文件输入,然后使用 JavaScript 提交表单以强制用户上传文件。

这就是为什么您无法在 HTML 中预填充文件输入的原因。

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

In short, you can't. This is a symptom of HTML file inputs.

A file input takes a the local path of the file on the client's machine (not the server), so consider this (hypothetical) scenario:

  1. User A uploads a file and saves article
  2. User B edits the article, and the file input is pre-populated with the path to the file that was uploaded by User A (but the path doesn't exist on User B's machine).
  3. User B saves, and no file is submitted.

It would be a major security risk also. Let's say you write a malicious script which contains a form and file input. If you knew the path to a file on the client's machine then you could pre-populate the file input and then submit the form with JavaScript to force the user to upload the file.

This is why you can't pre-populate a file input in HTML.

As an alternative you should use sfWidgetFormInputFileEditable which will display the previously uploaded image alongside the file input. However, this will only display once the form has submitted and saved successfully.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文