我有一个包含多个文本输入和一个文件的HTML表单。
如果任何输入无效,则表单将再次显示给用户,并将其先前的答案作为默认值。我知道如何使用文本输入执行此操作,但有没有办法对文件执行此操作?
答案 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" />