2015-11-23 2 views
-1

Простите, если части этого вопроса не имеют смысла - я новичок в программировании в целом. Не стесняйтесь поправлять меня!

Вот моя проблема: я делаю страницу загрузки PHP, которая использует $ _POST. В разделе HTML есть два поля для загрузки, оба из которых являются необязательными. Так вот мой код, скажем, пример-upload.php:

<form action="" enctype="multipart/form-data" method="post"> 
    <input type="file" id="upload1" name="upload1" accept=".jpg"> 
    <input type="file" id="upload2" name="upload2" accept=".jpg"> 
    <button type="submit" name="submit">Submit either, both, or none of these</button> 
</form> 
<?php 
if (isset($_POST['submit'])) { 
    if (!empty($_POST['upload1'])) { 
     $filename_upload1 = $_FILES['upload1']['name']; 
    } 
    if (!empty($_POST['upload2'])) { 
     $filename_upload2 = $_FILES['upload2']['name']; 
    } 
    // Checks if there is no upload at all 
    if (!isset($filename_upload1) && !isset($filename_upload2)) { 
     echo 'You didn\'t upload anything and that\'s OK'; 
    } else { 
     if (isset($filename_upload1)) { 
      move_uploaded_file($_FILES['upload1']['tmp_name'], 'path/to/file/' . $filename_upload1); 
     } 
     if (isset($filename_upload2)) { 
      move_uploaded_file($_FILES['upload2']['tmp_name'], 'path/to/file/' . $filename_upload2); 
     } 
     echo 'One or two files was successfully uploaded'; 
    } 
} 
?> 

Каждый раз, когда я запускаю это, подчиняясь либо один или оба файла, я получаю сообщение «Вы не закачивать ничего, и что все в порядке» , заставив меня поверить, что я делаю что-то неправильно с переменной $ _FILES. Необычно, что у меня другая форма на подобной странице, за исключением одного поля для загрузки вместо двух. Кажется, это работает.

Любые советы? Спасибо!

+0

мы 'здесь обрабатываются файлы не $ _POST, поэтому 'if (! empty ($ _ POST [' uploadX '])) 'будет терпеть неудачу. –

+1

в следующий раз >>> http://php.net/manual/en/function.error-reporting.php –

+0

и убедитесь, что папка, которую вы хотите загрузить, имеет права доступа к ней. –

ответ

3

В вашей форме нет переменной $_POST['upload1']. Файлы передаются в пределах $_FILES массива.

Таким образом, в простейшем случае вы можете проверить $_FILES['upload1']['name']:

if (!empty($_FILES['upload1']['name'])) { 
    $filename_upload1 = $_FILES['upload1']['name']; 
} 

И тот же чек на upload2:

if (!empty($_FILES['upload2']['name'])) { 
    $filename_upload2 = $_FILES['upload2']['name']; 
} 
+0

вы пропустили один ;-) есть 2. –

+0

Это просто пример) –

+0

Мне нравится расставлять все 'i' и бары все' t' - подмигивать. Они могут подумать, что есть только одна ошибка. –

1

Вы должны проверить $_FILES и не $_POST

if (!empty($_FILES['upload1'])) 
{ 
    $filename_upload1 = $_FILES['upload1']['name']; 
} 
Смежные вопросы