загрузка файла не работает в форме HTML - PullRequest
1 голос
/ 15 марта 2012

Я использую простую форму для загрузки 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'];, я получу пустую строку, и если я сделаю то же самое для всех остальных, имя файла будет правильно распечатано. Что мне здесь не хватает?

РЕДАКТИРОВАТЬ: Неважно, что поле 'tagreement' является последним в списке, я пытался переместить его раньше других, и оно все еще не работает.

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
    )
)

1 Ответ

1 голос
/ 15 марта 2012

выглядит как ваши имена полей на дисплее, а имена переменных в проверке не согласованы.

Ваш второй бит кода должен быть:

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.";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...