Maison >développement back-end >Problème PHP >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
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.
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,'$substr') "; $res = mysqli_query($link,$sql); }
Données générées
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 = ''; while ($row = mysqli_fetch_assoc($res)) { $imgStr .= $row['bstr'] ; } $binaryStr = base64_decode($imgStr); file_put_contents("ThisImg.jpg", $binaryStr);
6 , images générées avec succès
Tutoriel recommandé :
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!