Je travaille sur un site Web de type réseau social pour les musiciens qui utilise une base de données MySql sur phpMyAdmin. J'ai un problème avec le site Web en insérant des fichiers image dans la base de données, puis en les affichant (pour les images de profil). Les images sont stockées en tant que LONGBLOB dans la base de données.Insérer un fichier image dans la base de données MySQL
Si j'ajoute une image directement via phpMyAdmin, cela fonctionne correctement. C'est un .jpg stocké comme .bin dans le type de données LONGBLOB en fonction de la base de données. Sur mon site je peux interroger et afficher parfaitement à l'aide:
<img src="data:image/jpeg;base64,<?php echo base64_encode($memberpicture);?>"
ALT="Member does not have picture" WIDTH=100 HEIGHT=100></img>
Cependant, si un utilisateur de site crée un profil et insère une image comme image de profil à l'aide de la fonctionnalité « créer un profil » du site, il ne s'affiche sur leur profil. Voici la sélection du code d'image:
...
<div class="control-group">
<div class="controls">
<label>Band Picture</label>
<input type="file" name="picture"/>
</div>
</div>
...
Et voici le code d'insertion:
<?php
session_start();
foreach($_POST AS $key => $val) {
$_SESSION[$key]=$val;
}
mysql_connect("***", "***", "***");
mysql_select_db("musicians");
//...declare other values(name, bio, etc...
$cpicture=$_POST['picture'];
$cpicture = stripslashes($cpicture);
$cpicture = mysql_real_escape_string($cpicture);
$profileInsert="INSERT INTO profile(PROFILE_BANDNAME,PROFILE_GENRE,PROFILE_BANDBIO,
PROFILE_PICTURE,PROFILE_ART,PROFILE_MUSICVIDEO,PROFILE_PLAYLIST)
VALUES ('$cbandname','$cgenre','$cbio','$cpicture','$cart','$cvideo','$cplaylist')"
or die(mysql_error());
Si je regarde la base de données, il y a un fichier il après l'insertion, mais il est extrêmement faible (environ 16 octets), et il ne peut pas être consulté sur le site ou directement à partir de la base de données. Il s'agit d'un .bin stocké en tant que .bin dans le type de données LONGBLOB en fonction de la base de données, par opposition à un .jpg stocké en tant que .bin. Toute aide concernant cet insert serait grandement appréciée!
Pourquoi frodo pourquoi - utiliser le système de fichiers s'il vous plaît, ou pour la performance Mongodb + GridFS – user956584
êtes-vous sûr que l'image se rend au serveur? vous pouvez faire quelque chose comme copy ($ cpicture, "somepath") et assurez-vous juste qu'il est là avant de commencer à essayer de publier la base de données. peut-être juste le montrer directement après l'avoir téléchargé pour s'assurer? –