2

我无法使用 PHP 将文件上传到本地主机。我创建了简单的 html 表单和 php 脚本。但是我收到这些错误消息。

'import.html'

<html>
    <body>
        <form action="import.php" method="POST" enctype="multipart/form-data">
            <p>
                <label for="file">Choose import.xml</label><br/>
                <input type="file" name="import" id="import" /></p>
            <p><input type="submit" name="submit" value="Submit" /></p>
        </form>
    <body>
</html>

'import.php'

<?php
    if ($_FILES["import"]["error"] > 0)
    {
        echo "Return Code: " . $_FILES["import"]["error"] . "<br />";
    }
    else
    {
        echo "Upload: " . $_FILES["import"]["name"] . "<br />";
        echo "Type: " . $_FILES["import"]["type"] . "<br />";
        echo "Size: " . ($_FILES["import"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["import"]["tmp_name"] . "<br />";

        if (file_exists("upload/" . $_FILES["import"]["name"]))
        {
            echo $_FILES["import"]["name"] . " already exists. ";
        }
        else
        {
            move_uploaded_file($_FILES["import"]["tmp_name"],
            "upload/" . $_FILES["import"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["import"]["name"];
        }
    }

?>

错误信息:

警告:move_uploaded_file(upload/import.xml) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\teecom\admin\import.php on line 20

警告:move_uploaded_file() [function.move-uploaded-file]:无法将 'C:\Windows\Temp\phpD02C.tmp' 移动到 C:\xampp\htdocs\teecom\admin\ 中的 'upload/import.xml'第 20 行的 import.php 存储在:upload/import.xml

4

4 回答 4

2

看起来您正在使用 Windows。

如果可能,我会将目标路径从相对路径更改为绝对路径。例如:

move_uploaded_file($_FILES["import"]["tmp_name"],
            "C:/upload/" . $_FILES["import"]["name"]);

或尝试路径:

$_SERVER['DOCUMENT_ROOT'] . '/upload/' . $_FILES['import']['name']

在尝试上传之前,也可以先尝试创建 C:\upload\ 或 C:\xampp\htdocs\upload\ 目录。

于 2012-07-11T15:24:11.143 回答
1

好吧,根据您的本地主机目录,您可以尝试以下操作:

if (!file_exists("teecom/upload"))
{
    mkdir("teecom/upload", 0777, true);
}
if (file_exists("teecom/upload/" . $_FILES["import"]["name"]))
{
    echo $_FILES["import"]["name"] . " already exists. ";
}
else
{
    move_uploaded_file($_FILES["import"]["tmp_name"],
    "teecom/upload/" . $_FILES["import"]["name"]);
    echo "Stored in: " . "upload/" . $_FILES["import"]["name"];
}
于 2012-07-11T15:42:29.647 回答
0

您的文件显然没有上传到move_uploaded_file函数应该从中移动它的临时文件夹。发生这种情况的原因有很多,最常见的原因是您没有对 PHP 正在使用的临时文件夹的写入权限。

于 2012-07-11T14:46:46.230 回答
0

这是旧的,但对于将来遇到此问题的人,我为我的 localhost (wamp) 所做的只是单击服务器图标,转到 PHP,PHP 设置,然后选择文件上传。

这对我有用。

于 2013-08-12T04:17:11.517 回答