1

所以我在这里发布了一个较早的问题:上传

我尝试了解决方案,但现在无论它是否是正确的文件类型,它都只是说“无效文件”。这是我的html:

<form action="upload_file.php" method="post" enctype="multipart/form-data" target="my_iframe">
    Select a file: <input type="file" name="upload">
    <input type="submit">
</form>

这是我的upload_file.php:

$allowedExts = array("doc", "docx");
    $extension = end(explode(".", $_FILES["file"]["upload"]));

    if (($_FILES["file"]["size"] < 200000)
    && in_array($extension, $allowedExts)) {
        if ($_FILES["file"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
        else
        {
            echo "Upload: " . $_FILES["file"]["upload"] . "<br />";
            echo "Type: " . $_FILES["file"]["type"] . "<br />";
            echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
            echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

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

我也试过:

$extension = pathinfo( $_FILES["file"]["upload"], PATHINFO_EXTENSION);

并做了一个

die($extension);

在他们两个上,但什么都没有打印出来。所以我有两个问题
1)我上面的代码有什么问题
2)如何隐藏 iframe,直到收到回复?然后在用户阅读回复后有一个好的按钮让它消失?如果有帮助,这是 iframe 代码:

<iframe name="my_iframe" src="upload_file.php"></iframe>
4

4 回答 4

2

改变

$_FILES["file"]["upload"]

$_FILES["upload"]["name"]

无处不在,与其他参考文献相同。所以;

$_FILES["file"]["size"] **To** $_FILES["upload"]["size"]

$_FILES["file"]["type"] **To** $_FILES["upload"]["type"]

$_FILES["file"]["tmp_name"] **To** $_FILES["upload"]["tmp_name"]
于 2012-10-02T17:05:59.157 回答
1

你有:

if (($_FILES["file"]["size"] < 200000) && in_array($extension, $allowedExts)) {

它应该是 $_FILES["upload"]["size"] 因为你有

<input type="file" name="upload">
于 2012-10-02T17:06:33.863 回答
1

改变

$_FILES["file"]["size"]

$_FILES["upload"]["size"]

并对所有其他变量执行相同操作,根据您的 HTML ,您的输入文件的 name 属性是upload,而不是file :

<input type="file" name="upload">
                  HERE ----^
于 2012-10-02T17:07:06.067 回答
1

检查本教程: http ://www.w3schools.com/php/php_file_upload.asp

应该是 $_FILES["upload"] 你犯的一个错误

于 2012-10-02T17:08:37.077 回答