HTML表单无效时保留所选文件

时间:2010-02-19 05:15:21

标签: html

我有一个包含多个文本输入和一个文件的HTML表单。

如果任何输入无效,则表单将再次显示给用户,并将其先前的答案作为默认值。我知道如何使用文本输入执行此操作,但有没有办法对文件执行此操作?

3 个答案:

答案 0 :(得分:6)

您将无法使用文件输入执行此操作,因为这会出现安全问题。相反,请考虑在提交时执行一些客户端验证。在客户端逻辑中,确定是否应该中止提交(在页面刷新发生之前),或者是否允许它继续(将数据和文件发送到服务器)。

作为一个建议,jQuery Validation plugin非常精心构建,非常受客户端开发人员的欢迎。如果您决定解决客户端验证问题,我建议您考虑一下。

重要提示:客户端验证替代服务器端验证。它仅用于补充服务器上已有的验证逻辑。

答案 1 :(得分:0)

不,不幸的是,由于安全原因,不可能这样做。 :(

答案 2 :(得分:0)

正如其他人所说,你不能预先(或重新)填充文件输入字段。您也不应该这样做,因为每次提交表单时,用户都必须一次又一次地上传文件。

您可以做的最简单的事情就是简单地在会话中保留文件,并向用户显示已经上传文件的通知。如果用户选择上传另一个文件,请替换会话中的文件。

伪代码:

if ($_POST) // upon upload
{
   $saved_file_name = save_image_somewhere($_POST['file'])
   $_SESSION['file'] = $saved_file_name
}

...

if ($_SESSION['file'])
{
    <p>Uploaded file: { echo $_SESSION['file'] }</p>
    <p>Select another file below if you want to replace it.</p>
}
<input type="file" />