1

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

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

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

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

我的代码是:

上传者.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 
    } 
?>

上传表单.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
4

1 回答 1

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"]);

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

move_uploaded_file($_FILES["file"]["tmp_name"],
"uploads/" . $_FILES["file"]["name"]);
于 2014-10-22T13:30:39.357 回答