• 技术文章 >后端开发 >PHP问题

    php如何向数据库添加图片

    王林王林2019-10-09 17:51:26原创2859

    百度开发者的云代码空间为了保证高可用,不允许用户将图片保存到代码空间中,使用CDN或者对象存储不仅收费而且使用比较复杂,于是考虑能否将img存储在数据库中,虽然很多人说会造成性能问题,权当一试。

    1、准备三个文件

    数组图片.png

    第一个用于将图片存储为数据库字符,第二个php文件用于获取数据库字符并生成图片,第三个是文件1所使用的图片。

    2、数据库设计

    超长字符串或者二进制数据分别可以用TEXT(65535),BLOB(64k)保存,但是尝试使用二进制保存失败,便使用TEXT保存,但是一张500多kb的图片经过base64加密的字符长度高度75万!

    仅仅靠一个TEXT是存不下去的,而且应该也会造成严重的性能问题,所以分割成N份保存,这里以50000字符长度为一个单位。记录imgid,方便拼接。

    数组图片-1.png

    3、将图片保存到数据库[dm01_imgTobase64.php]

    /*链接数据库*/
    
    // 1.转为普通字符
    $file = file_get_contents('test.jpg');
    $base64_str = base64_encode($file);
    $len = strlen($base64_str);
    $step = ceil($len/50000);
    
    for ($i=0; $i <$step ; $i++) { 
        $substr = substr($base64_str, $i*50000,50000);
        $sql = "INSERT INTO b64_img VALUES( null,1,1,$i,'$substr') ";
        $res = mysqli_query($link,$sql);
    }

    4、生成的数据

    数组图片-2.png

    5、读取数据库记录,生成图片[dm02_getImg.php]

    /*链接数据库*/
    
    
    $sql = "SELECT * FROM b64_img WHERE imgid = 1 ORDER BY bakid ASC ";
    $res =    mysqli_query($link,$sql);
    $data = array();
    $imgStr = '';
    
    while ($row = mysqli_fetch_assoc($res)) {
        $imgStr .= $row['bstr']    ;
    }
    
    $binaryStr = base64_decode($imgStr);
    file_put_contents("ThisImg.jpg", $binaryStr);

    6、成功生成图片

    数组图片-3.png

    推荐教程:PHP视频教程

    以上就是php如何向数据库添加图片的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 数据库 图片
    上一篇:PHP如何添加mysqli扩展 下一篇:php如何循环输出5维数组
    Web大前端开发直播班

    相关文章推荐

    • thinkphp5中怎样配置数据库?• php中数据库怎么设计• php写入数据库乱码• php文件怎么连接数据库

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网