php - 为什么我的图片无法上传并且检索时图片是空白的

标签 php html mysql

当我尝试上传它时出现的错误是这个错误:

Warning: file_get_contents(MTUtODAwLmpwZw==): failed to open stream: No such file or directory in C:\xampp\htdocs\miniproject\imageupload\image.php on line 24

此外,我已经在数据库中插入了一张图片,当检索它时,它只显示一张木板图片。

这是我的代码

<?PHP
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
?>
<html>
    <body>
        <form method="post" enctype="multipart/form-data">
           <br/>
           <input type="file" name="image"/>
            <br/><br/>
           <input type="submit" name="sumit" value="Upload"/>
        </form>
    <?php
        if(isset($_POST['sumit']))
        {
            if (getimagesize($_FILES['image']['tmp_name'])==FALSE)
            {
                echo "Please select an image.";
            }
            else
            {
                $image= addslashes($_FILES['image']['name']);
                $name= addslashes($_FILES['image']['name']);
                $image= file_get_contents($image);
                $image= base64_encode($image);
                saveimage($name, $image);
            }
        }
        displayimage();
        function saveimage($name,$image)
        {
            $con=  mysql_connect("localhost:3307", "root", "");
            mysql_select_db("kstark",$con);
            $qry="insert into images (name, image) values ('$name','$image')";
            $result=  mysql_query($qry,$con);
            if ($result)
            {
                echo "<br/>Image uploaded.";
            }
            else
            {
                echo "<br/>Image not uploaded.";
            }
        }
        function displayimage()
        {
            $con=  mysql_connect("localhost:3307", "root", "");
            mysql_select_db("kstark",$con);
            $qry="select * from images";
            $result=  mysql_query($qry,$con);     
            while($row = mysql_fetch_array($result))
            {
                echo '<img height="300" width="300" src="data:image;base64,'.$row[2].'">';
            }
            mysql_close($con);
        }
    ?>
</body>

最佳答案

当您尝试检索内容时,需要使用tmp_name而不是文件名。

if(isset($_POST['sumit']))
{
    if (getimagesize($_FILES['image']['tmp_name'])==FALSE) {
        echo "Please select an image.";
    } else {
        /* use the tmp_name rather than name here! */
        $image=file_get_contents( $_FILES['image']['tmp_name'] );
        $image=base64_encode($image);
        $name=addslashes($_FILES['image']['name']);

        saveimage($name,$image);
    }
}

关于php - 为什么我的图片无法上传并且检索时图片是空白的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38990105/

相关文章:

php - 在php中获取特定时间的strtotime

php artisan serve - 如何让 mysql 运行

html - 如何仅使用CSS使父div的宽度等于子图像的宽度,子图像的高度等于父div的高度

mysql - MySQL中的字符串格式化

javascript - $.ajax提交表单,有时成功有时出错

php - 无法将 JSON 解码为 PHP 数组并显示在 HTML 表中

javascript - 运行 javascript 过夜后系统挂起

html - CSS 类不起作用

php - 'admin' OR 1=1 -- '的含义是什么

MySQL:存储过程可以调用Java程序吗?