文件上传没有';不能以HTML形式工作


file upload doesn't work in HTML form

我使用一个简单的表单上传5个文件:

<form enctype="multipart/form-data" action="openaccount.php" method="post">
<h4>Proof of Identity of Account Operator 1</h4>
<p>Government issued Photo ID to verify identity:
<br/><input name="tidentity_proof" type="file" />
<p>Documentation to verify permanent residential address:
<br/><input name="taddress_proof" type="file" />
<h4>Proof of Identity of Account Operator 2 (if any)</h4>
<p>Government issued Photo ID to verify identity:
<br/><input name="tidentity_proof2" type="file" />
<p>Documentation to verify permanent residential address:
<br/><input name="taddress_proof2" type="file" />
<h4>Signed Fund Agreement</h4>
<p>Choose a file to upload:
<br/><input name="tagreement" type="file" />
<input type="submit" name="submit" value="Submit" />
</form>

由于这5个文件中的每一个都是强制性的,我在提交表格时要检查一下是否所有5个文件都已上传:

if($_FILES['tidentity_proof']['name']=="" || $_FILES['tidentity_proof2']['name']=="" || $_FILES['taddress_proof']['name']=="" || $_FILES['taddress_proof2']['name']=="" || $_FILES['tagreement']['name']==""){
    $_SESSION['message'].="You must upload files as identity proof.";
}

如果我为所有5个字段选择文件,前4个可以,但第5个不行。因此,如果我执行echo $_FILES['tagreement']['name'];,我会得到一个空字符串,如果我对所有其他字符串执行相同操作,则文件名将正确打印出来。我在这里错过了什么?

编辑:"标签"字段最后一个在列表中并不重要,我试着把它移到其他字段之前,但它仍然不起作用。

print_r($_FILES):

Array (
    [tidentity_proof] => Array (
        [name] => cathypersons_deerdoe.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpcfeBC9
        [error] => 0 [size] => 40299
    )
    [taddress_proof] => Array (
        [name] => cheetah20cubs.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpRp4qu1
        [error] => 0 [size] => 84873
    )
    [tidentity_proof2] => Array (
        [name] => cheetah20cubs.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpCpGkmT
        [error] => 0
        [size] => 84873
    )
    [taddress_proof2] => Array (
        [name] => cathypersons_deerdoe.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpBUBheL
        [error] => 0
        [size] => 40299
    )
)

在显示中看起来像您的字段名,并且检查中的变量名不一致。

你的第二个代码应该是:

if($_FILES['tidentity_proof']['name']=="" || $_FILES['taddress_proof']['name']=="" || $_FILES['tidentity_proof2']['name']=="" || $_FILES['taddress_proof2']['name']=="" || $_FILES['tagreement']['name']==""){
    $_SESSION['message'].="You must upload files as identity proof.";
}