Maison >développement back-end >Problème PHP >Comment ajouter des images à la base de données en php

Comment ajouter des images à la base de données en php

王林
王林original
2019-09-20 17:53:226783parcourir

Comment ajouter des images à la base de données en php

Afin de garantir une haute disponibilité, le Cloud Code Space de Baidu Developer ne permet pas aux utilisateurs d'enregistrer des images dans l'espace de code. L'utilisation d'un CDN ou d'un stockage d'objets est non seulement payante, mais également compliquée à utiliser. , nous avons donc réfléchi à la question de savoir s'il fallait stocker img dans la base de données, même si de nombreuses personnes disent que cela entraînerait des problèmes de performances, vous devriez l'essayer.

1. Préparez trois fichiers

Comment ajouter des images à la base de données en php

Le premier est utilisé pour stocker les images sous forme de caractères de base de données, le second Le premier Le fichier php est utilisé pour obtenir les caractères de la base de données et générer des images, et le troisième est l'image utilisée dans le fichier 1.

2. Conception de la base de données

Des chaînes très longues ou des données binaires peuvent être enregistrées respectivement à l'aide de TEXT (65535) et BLOB (64k), mais les tentatives d'enregistrement à l'aide de données binaires ont échoué. . J'utilise TEXTE pour l'enregistrer, mais une image cryptée en base64 de plus de 500 Ko a une longueur de 750 000 caractères !

Un seul TEXTE ne peut pas être enregistré, et cela peut également entraîner de graves problèmes de performances, il est donc divisé en N parties et enregistré Ici, la longueur de 50 000 caractères est utilisée comme unité. Enregistrez imgid pour faciliter l’épissage.

Comment ajouter des images à la base de données en php

3. Enregistrez l'image dans la base de données [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,&#39;$substr&#39;) ";
    $res = mysqli_query($link,$sql);
}

Données générées

Comment ajouter des images à la base de données en php

5. Lire les enregistrements de la base de données et générer des images [dm02_getImg.php]

/*链接数据库*/


$sql = "SELECT * FROM b64_img WHERE imgid = 1 ORDER BY bakid ASC ";
$res =    mysqli_query($link,$sql);
$data = array();
$imgStr = &#39;&#39;;

while ($row = mysqli_fetch_assoc($res)) {
    $imgStr .= $row[&#39;bstr&#39;]    ;
}

$binaryStr = base64_decode($imgStr);
file_put_contents("ThisImg.jpg", $binaryStr);

6 , images générées avec succès

Comment ajouter des images à la base de données en php

Tutoriel recommandé :

Tutoriel vidéo PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn