【问题标题】:Why is this example for uploading a file using php not working?为什么这个使用 php 上传文件的示例不起作用?
【发布时间】:2021-05-27 04:36:22
【问题描述】:

这是 Robin Nixon(第 5 版)的“Learning PHP, MYSQL & JavaScript”中的示例 7-15(upload.php):

<?php // upload.php
  echo <<<_END
    <html><head><title>PHP Form Upload</title></head><body>
    <form method='post' action='upload.php' enctype='multipart/form-data'>
    Select File: <input type='file' name='filename' size='10'>
    <input type='submit' value='Upload'>
    </form>
_END;

  if ($_FILES)
  {
    move_uploaded_file($_FILES['filename']['tmp_name'], $name);
    echo "Uploaded image '$name'<br><img src='$name'>";
  }

  echo "</body></html>";
?>

我在运行 OS X 12.2.1 的 Mac 上安装了 XAMPP。我将文件/Application/XAMPP/etc/httpd.conf 中的DirectoryRoot 更改为指向目录$proj/WebDev。正如本书所推荐的,我正在使用 IDE(在我的例子中为 Eclipse)进行开发和测试。 ch中的所有练习。 1-6,以及ch中的所有先前练习。 7、工作既可以在Eclipse环境中工作,也可以通过直接向浏览器(Firefox)提供URL,例如“localhost/WebDev/upload.php”。该代码允许我找到要上传的 jpg 文件,可以按下上传按钮,但是:(1)没有“上传图片”消息; (2) 上传的文件不存在。执行后,“选择文件”按钮旁边会出现“未选择文件”。我错过了什么?

【问题讨论】:

  • 如果这是整个脚本,我看不到 $name 的设置位置,这将是上传的文件文件名。

标签: php eclipse macos xampp


【解决方案1】:

$name 未初始化。 move_uploaded_file 不知道将文件移动到哪里。 变成这样:

<?php // upload.php
    error_reporting(E_ALL);
  echo <<<_END
    <html><head><title>PHP Form Upload</title></head><body>
    <form method='post' action='upload.php' enctype='multipart/form-data'>
    Select File: <input type='file' name='filename' size='10'>
    <input type='submit' value='Upload'>
    </form>
_END;

  if ($_FILES && is_uploaded_file($_FILES['filename']['tmp_name']))
  {
    $name = $_FILES['filename']['name'];
    move_uploaded_file($_FILES['filename']['tmp_name'], $name);
    echo "Uploaded image '$name'<br><img src='$name'>";
  }
  echo "</body></html>";

如果您想了解更多信息,请将此行添加为第一行,以检查来自 PHP 的通知、警告和错误。

error_reporting(E_ALL);

【讨论】:

    猜你喜欢
    • 2013-05-10
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多