试图创建一个简单的图像上传器

时间:2013-04-18 18:28:28

标签: php html

我正在尝试为我的网络应用程序创建一个图片上传器。我已经尝试在线搜索如何创建一个解决方案,但没有太多运气找到任何真正的帮助。我也不确定我应该用什么词来搜索正确的结果。我确实在W3Schools网站上找到了一些东西,(http://www.w3schools.com/php/php_file_upload.asp),但我还是无法将它上传到我的服务器。由于我按照网站上的说明进行设置,因此不确定问题是什么。我也发现了这个(JavaScript: Upload file),但它并不完全是我想要的。我仍然需要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>
     

  

2 个答案:

答案 0 :(得分: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) )

答案 1 :(得分:0)

如果您可以扩展此服务器错误,那将是一件好事。我没有足够的评论来评论,所以不得不在这里要求澄清。

  • 您要上传哪台服务器? public_html / uploads /目录是否确实存在?您使用的路径指向它是否正确?
  • 您的临时上传目录设置为什么?
  • 另外,请检查您是否正确选择了文件扩展名。也许使用pathinfo()。示例如下。

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

    $ ext = $ extension ['extension'];