2015-03-25 4 views
1

У меня есть две формы на одной странице, которые должны дать пользователям возможность вешать загрузки файла на сервер (с URL или с компьютера пользователя)Загрузка файла на сервер

<form method="post" action="bigorder.php" name="photourl"> 
    <label for="photoorig">URL</label> 
    <input type="url" name="photoorig" placeholder=""> 
    <input type="submit" value="Load" name="photoload"> 
    <br> 
</form> 

<form method="post" action="bigorder.php" name="photofile" enctype="multipart/form-data"> 
    <label for="photoloc">Load own file</label> 
    <input type="file" name="photoloc" id="photoloc"> 
    <input type="submit" value="Load" name="photoload2"> 
</form> 

и РНР

<?php 
    $tmpname=rand().".jpg"; 
    if ($_POST['photoorig']) { 
    $file=file_get_contents($_POST['photoorig']); 
    $fp = fopen("/var/www/html/uploads/tmp/".$tmpname, "w"); 
    fwrite($fp, $file); 
    fclose($fp); 
    } 
    if ($_POST['photoloc']) { 
    $tmpFile = $_FILES['photoloc']['tmp_name']; 
    $newFile = "/var/www/html/uploads/tmp/".$_FILES['photoloc']['name']; 
    $result = move_upload_file($tmpFile, $newFile); 
    echo $_FILES['photoloc']['name']; 
     if ($result) { 
     echo ' was uploaded<br />'; 
     } else { 
     echo ' failed to upload<br />'; 
    } 
?> 

Первая форма загружает файлы в порядке, но второй не работает вообще. Я даже не получаю сообщение об ошибке.

Что я делаю неправильно? Или что-то не хватает?

+0

Функция использования является 'move_uploaded_file()', а не 'move_upload_file()' – D4V1D

+0

Кроме того, если ничего не воспроизводится, может быть, это потому, что состояние 'если ($ _ POST [ 'photoloc'])' никогда встретил? – D4V1D

+0

@ D4V1D, спасибо! Изменение вправо 'move_uploaded_file()' помогло решить проблему! – Anatoly

ответ

0

Вот правильный код, он работает. В вашем коде фигурные скобки отсутствовали во второй форме, и функция isset() должна использовать для проверки размещенных данных или нет.

<?php 
     $tmpname=rand().".jpg"; 
     if (isset($_POST['photoload'])) { 
     echo '1st'; 
     $file=file_get_contents($_POST['photoorig']); 
     $fp = fopen("/var/www/html/uploads/tmp/".$tmpname, "w"); 
     fwrite($fp, $file); 
     fclose($fp); 
     } 
     if (isset($_POST['photoload2'])) { 
     echo '2nd'; 
     $tmpFile = $_FILES['photoloc']['tmp_name']; 
     $newFile = "/var/www/html/uploads/tmp/".$_FILES['photoloc']['name']; 
     $result = move_upload_file($tmpFile, $newFile); 
     echo $_FILES['photoloc']['name']; 
      if ($result) { 
      echo ' was uploaded<br />'; 
      } else { 
      echo ' failed to upload<br />'; 
       } 
     } 
    ?> 
+0

Теперь это работает! Также я изменил 'move_upload_file()' на 'move_uploaded_file()' как @ D4V1D, рекомендованный! – Anatoly

Смежные вопросы