表单验证失败时,保存所选文件


save chosen file, when form validation fails

我有一个带有一些输入字段的表单。其中之一是文件上传字段。当用户提交表单时,每个字段都将被验证,页面将重新加载错误消息,但所有其他字段仍显示用户输入。现在我想要的是,一旦用户选择了一个文件,并且由于其他错误而无法验证表单,那么在重新提交后,所选的文件仍将上传。

我使用value属性显示输入的值。我知道,由于安全问题,您无法设置文件输入的值。

这就是我目前所掌握的:

<?php
if(isset($fileUpload)) 
{
    echo "<span>selected File: ".$fileUpload["name"]."<span>";
    $_FILES["file-upload"]=$fileUpload;
} ?>
<input type="file" class="button" name="file-upload" id="file-upload" accept=".zip"/>

这种情况发生在提交之后:

if (!isset($_FILES["file-upload"]))
{
    $uploadError = "Please choose a file";
    $hasError = true;
} else {
    $fileUpload=$_FILES["file-upload"];   
}

提交的文件存储在$fileUpload中。我尝试手动设置$_FILES["file-upload"]变量,但似乎不起作用。重新提交后,$fileUpload["name"]为空。

如何保存所选文件,以便用户在提交失败后无需重新选择?

你不能像其他字段一样在加载页面后存储文件值(另一种方式是你可以上传文件,作为回报,你可以在隐藏中传递上传的文件值,如果用户再次添加文件,则取消前一个文件的链接,否则使用第一步上传的文件。)