0

我正在尝试为我的 Web 应用程序创建一个图像上传器。我曾尝试在线搜索有关如何创建解决方案的解决方案,但没有找到任何真正的帮助。我也不确定应该使用什么词来搜索正确的结果。我确实在 W3Schools 网站 ( http://www.w3schools.com/php/php_file_upload.asp ) 上找到了一些东西,但我仍然无法将文件上传到我的服务器。不确定是什么问题,因为我按照网站上的说明进行了设置。我也发现了这个(JavaScript:上传文件),但这并不完全是我想要的。我仍然需要 php 脚本,因为图像不是我要发送到服务器的唯一内容。我还将发送其他信息以存储到我在服务器上的数据库中,例如图像名称和与图像相关的其他信息。

我正在使用的 php 脚本(我从 W3S 网站上下载下来)位于下方。我遇到的问题是,一旦我点击提交按钮,我的页面就会崩溃,或者我应该说我得到了服务器错误,但没有关于导致它的原因的信息。任何帮助将不胜感激

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjepg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts)) {
    if ($_FILES["file"]["error"] > 0) {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
    else {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " KB<br>";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];

        if (file_exists("public_hmtl/uploads/" . $_FILES["file"]["name"])) {
            echo $_FILES["file"]["name"] . " already exists. ";
        }
        else {
            move_uploaded_file($_FILES["file"]["tmp_name"], "public_hmtl/uploads/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "public_hmtl/uploads/" . $_FILES["file"]["name"];
        }
    }
}
else {
    echo "Invalid file";
}
?>

这也是表单的 html。

    <!DOCTYPE html>
    <html>
    <head>
        <title>Location details</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    </head>
    <body>
        <div>
            <form enctype="multipart/form-data" method="post" action="scripts/snap.php">
        <!--<p>
            <input id="plat" class="plat" name="plat" type="hidden" value="" />
            <input id="plon" class="plon" name="plon" type="hidden" value=""  />
        </p>-->
        <div class="row">
            <label for="file">Select an image to Upload</label><br />
            <input type="file" name="file" id="file" />
        </div>
        <div id="filename"></div>
        <div id="fileSize"></div>    
        <div id="fileType"></div>
        <div class="row">
            <input type="submit" name="submit" value="Submit" />
            <!--<input type="button" onclick="uploadFile()" value="Upload" />-->
        </div>
        <div id="progressNumber"></div>
    </form>
</div>

4

2 回答 2

2

if语句中,开闭标签不匹配,更正一下

if ( ( ($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjepg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png")
)
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts) )
于 2013-04-18T18:52:52.840 回答
0

如果您可以扩展您收到的此服务器错误,那就太好了。我没有足够的代表发表评论,所以必须在这里要求澄清。

  • 你上传到哪个服务器?public_html/uploads/ 目录真的存在吗?您用来指向它的路径是否正确?
  • 您的临时上传目录设置为什么?
  • 此外,请检查您是否正确选择了文件扩展名。也许使用 pathinfo()。下面的例子。

    $extension = pathinfo($_FILES['file']['name']);

    $ext = $extension['extension'];

于 2013-04-18T18:46:11.933 回答