用PHP上传文件并不起作用

时间:2014-10-22 13:17:41

标签: php html5 php-5.5

我是PHP的新手,我正在尝试制作一个上传脚本。但它并没有完全奏效。

不起作用的是,当我上传照片时,它不会将照片存储在“上传”文件夹中。 (文件夹位置为:应用程序> MAMP> htdocs> Marjolein)

此外,我想显示已在浏览器中上传的照片,但这也不起作用。

我使用Mac并使用MAMP来运行我的PHP代码。你可以帮助我,这样我就可以在浏览器中显示图片并将其存储在“上传”文件夹中吗?

我的代码是:

uploader.php

<style>
.sucess{
    color:#088A08;
}
.error{
    color:red;
}
</style>

<?php
    $file_exts = array("jpg", "bmp", "jpeg", "gif", "png");
    $upload_exts = end(explode(".", $_FILES["file"]["name"]));
    if ((($_FILES["file"]["type"] == "image/gif")
            || ($_FILES["file"]["type"] == "image/jpeg")
            || ($_FILES["file"]["type"] == "image/png")
            || ($_FILES["file"]["type"] == "image/pjpeg"))
            && ($_FILES["file"]["size"] < 2000000)
            && in_array($upload_exts, $file_exts))
    {
        if ($_FILES["file"]["error"] > 0)
        {
            echo "Return Code: " . $_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 "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
            // Enter your path to upload file here
            if (file_exists("://Applications/MAMP/htdocs/Marjolein/uploads/" .
            $_FILES["file"]["name"]))
            {
                echo "<div class='error'>"."(".$_FILES["file"]["name"].")".
                " already exists. "."</div>";
            }
            else
            {
                move_uploaded_file($_FILES["file"]["tmp_name"],
                "://Applications/MAMP/htdocs/Marjolein/uploads/" . $_FILES["file"]["name"]);
                echo "<div class='sucess'>"."Stored in: " .
                "://Applications/MAMP/htdocs/Marjolein/uploads/" . $_FILES["file"]["name"]."</div>";
            }
        }
    }
    else
    {
    echo "<div class='error'>Invalid file</div>";
    }

?>

<?php 
    if(isset($_REQUEST['show_image']) and $_REQUEST['show_image']!='')
    {
?>
        <p><img src="uploads/<?php echo $_REQUEST['show_image'];?>" /></p>
<?php 
    } 
?>

uploadform.html

<html>
<body>

<form action="uploader.php" method="post"
enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

点击提交按钮后,网页浏览器显示:

Upload: 0_8caab_996cc75d_orig.jpg
Type: image/jpeg
Size: 538.166992188 kB
Temp file: /Applications/MAMP/tmp/php/phptpCA8B
Stored in: ://Applications/MAMP/htdocs/Marjolein/uploads/0_8caab_996cc75d_orig.jpg

1 个答案:

答案 0 :(得分:0)

尝试在上传后回显图像:(不知道图像的存储)

echo '<img src="://Applications/MAMP/htdocs/Marjolein/uploads/" . $_FILES["file"]["name"]" border=0>';

把它放在这里:

else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"://Applications/MAMP/htdocs/Marjolein/uploads/" . $_FILES["file"]["name"]);
echo "<div class='sucess'>"."Stored in: " .
"://Applications/MAMP/htdocs/Marjolein/uploads/" . $_FILES["file"]["name"]."</div>";
 echo '<img src="://Applications/MAMP/htdocs/Marjolein/uploads/" . $_FILES["file"]["name"]" border=0>';
}

可能文件的路径不正确。我想你可以尝试这个而不是你以前的路径:

move_uploaded_file($_FILES["file"]["tmp_name"],
"../uploads/" . $_FILES["file"]["name"]);

或者如果文件夹“uploads”位于与uploader.php相同的位置,您可以使用:

move_uploaded_file($_FILES["file"]["tmp_name"],
"uploads/" . $_FILES["file"]["name"]);