php在验证表单时保留文件字段的值,返回false


php keep the value of file fields when validating a form returns false

我正在处理yii框架表单,我有一个这样的表单:

<?php echo CHtml::beginForm('', 'post', array('enctype' => 'multipart/form-data')); ?>
    Image:<?php echo CHtml::activeFileField($model, 'image');?>
          <?php echo CHtml::error($model, 'image');?>
    Full name: <?php echo CHtml::activeTextField($model, 'fullName');?>
               <?php echo CHtml::error($model,'fullName'); ?>
   <?php echo CHtml::submitButton('save);?>
<?php echo CHtml::endForm();?>

如果用户输入有错误,则文件字段变为空,然后用户必须重新选择他的图像。。有没有办法将文件字段值保存在yii或php中?

提前感谢

简短回答:无

文件输入依赖于用户的本地文件系统,服务器(以及PHP)对此一无所知。因此,一旦提交了表单,用户就必须重新选择该文件。这更像是一个安全问题。

以下是在这方面改进用户体验的两种可能方法:

  • 该文件将成功上传,因此您可以将其保存在服务器上,并在重新提交表单时使用您的副本(很难实现,可能会让用户感到困惑,通常不建议使用)
  • (更好)在提交表单之前,您可以使用Javascript验证表单输入客户端,或者通过AJAX验证服务器端。如果你这样做,你仍然应该验证服务器端,但这将有助于为合法用户提供更好的用户体验,这似乎是你在这里所担心的