【问题标题】:Loading file to server将文件加载到服务器
【发布时间】:2015-03-25 10:52:59
【问题描述】:

我在一个页面上有两个表单,应该让用户可以将文件加载到服务器(从 URL 或从用户的 PC)

<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

<?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 />';
   }
?>

第一个表单可以正常加载文件,但第二个表单根本不起作用。我什至没有收到任何错误消息。

我做错了什么?还是遗漏了什么?

【问题讨论】:

  • 要使用的函数是move_uploaded_file(),而不是move_upload_file()
  • 另外,如果没有输出,可能是因为条件if($_POST['photoloc'])从未满足?
  • @D4V1D,谢谢!改到右边move_uploaded_file()帮助解决了问题!

标签: php forms file-upload


【解决方案1】:

这是正确的代码,它正在工作。在您的代码中,第二种形式中缺少花括号,并且 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 />';
                }
       }
    ?>

【讨论】:

  • 现在可以了!我也按照@D4V1D 的建议将move_upload_file() 更改为move_uploaded_file()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
相关资源
最近更新 更多