php上传图片到数据库与网页无法显示的问题

        php可以通过表单上传文件到数据库的blob字段,然后输出,其实更好的做法是把文件保存到服务器,只在数据库中记录相关信息就可以了,但是不是任何时候都能照自己的想法去做。这不,我只能上传图片到数据库然后显示在网页,结果却遇到了问题:图片无法显示。

        把图片上传到数据库然后显示一般的做法是专门写一个php页面,通过GET或POST方法获取图片的id、查询数据库、header函数输出图片类型、再echo图片数据就可以了,这个方法是没有问题的,可是我却出了问题,图片总是无法显示,在网上查询了很多资料,试了很多方法,都不行,最后在stack overflow上看到一个回答,由于是英文就不原句引用了,内容是header这个函数有些特殊,要小心不要在header位置前有其他的header或别的什么内容,结果就是这个问题,由于我写了一个php文件包含了一些通用函数,其中也有javascript的函数,我在输出图片的php文件把require语句去掉就行了,图片就能够输出了。

        不得不说编程有时候是件很让人头疼的事,仅仅因为一句require语句,却花了我一天时间去尝试各种方法;可是编程又是件有意思的事,因为在解决了问题,程序成功运行的时刻,那种成就感、满足感真的让人难以忘怀。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,我们需要在表中创建一个 BLOB 类型的列,用于存储图片数据。然后,我们可以使用 PHP 的 file_get_contents() 函数将上传的图片读取到一个变量中,然后将该变量中的数据插入到数据库中。 以下是一个示例代码: ```php // 连接数据库 $host = 'localhost'; $username = 'your_username'; $password = 'your_password'; $dbname = 'your_database_name'; $conn = mysqli_connect($host, $username, $password, $dbname); // 处理上传的文件 if(isset($_FILES['image']) && $_FILES['image']['error'] == 0) { $image = file_get_contents($_FILES['image']['tmp_name']); $image = mysqli_real_escape_string($conn, $image); $sql = "INSERT INTO images (image_data) VALUES ('$image')"; mysqli_query($conn, $sql); echo "图片上传成功!"; } else { echo "图片上传失败!"; } // 关闭数据库连接 mysqli_close($conn); ``` 注意,上述代码中的 images 是我们刚才创建的表名,image_data 是我们刚才创建的 BLOB 类型的列名。另外,我们使用 mysqli_real_escape_string() 函数对图片数据进行转义,以避免 SQL 注入攻击。 当用户上传一张图片后,该图片的二进制数据将被插入到数据库中。如果你想将图片显示网页上,可以使用以下代码: ```php // 连接数据库 $host = 'localhost'; $username = 'your_username'; $password = 'your_password'; $dbname = 'your_database_name'; $conn = mysqli_connect($host, $username, $password, $dbname); // 获取图片数据 $id = 1; // 假设图片的 ID 是 1 $sql = "SELECT image_data FROM images WHERE id = $id"; $result = mysqli_query($conn, $sql); $image = mysqli_fetch_assoc($result)['image_data']; // 显示图片 header('Content-type: image/jpeg'); echo $image; // 关闭数据库连接 mysqli_close($conn); ``` 上述代码中的 id 是我们要显示图片的 ID,通过 SELECT 语句从数据库中获取图片数据,然后将其作为图像数据输出到浏览器中,浏览器会自动将其显示图片。注意,我们在 header() 函数中设置了 Content-type 为 image/jpeg,这样浏览器就知道该数据是一张 JPEG 格式的图片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值