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

时间:2015-02-13 11:04:55

标签: php forms validation file-upload

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

我使用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"]为空。

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

1 个答案:

答案 0 :(得分:1)

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