begin process at 2012 05 31 10:59:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Transfert d'images en base de données


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Transfert d'images en base de données

vendredi 16 octobre 2009 à 18:18:27 | Transfert d'images en base de données

lancelolo

Bonjour,

J'ai des pages php qui me permettent de transférer des photos dans une base de données avec le type "blob". Le problème c'est que certaines photos ne se chargent pas entierment. Il y a toujours une bande blanche dans le bas de la photo. Un problème dans le chargement ou dans le poids ? Pourtant mes photos font moins de 100 Ko. Voilà mes pages :

une page photo.php qui reçoit en parametre l'id du véhicule à qui attribuer la photo (la pas de pb)

<HEAD>
</HEAD>
<BODY>
<?php
include ("transfert.php");
if ( isset($_FILES['fic']) )
{
if (transfert($_GET["voit"]))
{
echo "Transfert r&eacute;ussi";
echo "<br /><a href = \"modif.php?voit=" . utf8_decode($result['idvoit']) . "\">Retour</a><br />";
}
}
?>
<form enctype="multipart/form-data" action="#" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="250000" />
<input type="file" name="fic" size=50 />
<input type="submit" value="Envoyer" />
</form>
</BODY>

--------------------------------------------------------------

La pae transfert.php

<?php
function transfert ($car)
{
$ret = false;
$img_blob = '';
$img_taille = 0;
$img_type = '';
$img_nom = '';
$taille_max = 9000000;
$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
if ( !$ret )
{
echo "Problème de transfert";
return false;
}
else
{
// Le fichier a bien été reçu
$img_taille = $_FILES['fic']['size'];
if ( $img_taille > $taille_max )
{
echo "Trop gros !";
return false;
}
$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];

include('libs/prefs.php');
$sql = "SELECT * FROM images WHERE img_nom = \"".$img_nom."\"";
$query = mysql_query($sql);
$total = mysql_num_rows($query);


if($total)
{
}
else
{

$img_blob = file_get_contents ($_FILES['fic']['tmp_name']);

$req = "INSERT INTO images (".
"img_nom, img_taille, img_type, img_blob ".
") VALUES (".
"'".$img_nom."', ".
"'".$img_taille."', ".
"'".$img_type."', ".
// N'oublions pas d'échapper le contenu binaire
"'".addslashes ($img_blob)."') ";

mysql_query ($req);

$sql0 = "SELECT img_id FROM images WHERE img_nom = \"".$img_nom."\"";
$query0 = mysql_query($sql0);
$result0 = mysql_fetch_array($query0);

$idimg = $result0["img_id"];

$ins = "INSERT INTO photos (idvoit, img_id) VALUES (".$car.",".$idimg.")";
mysql_query ($ins);

unset($_FILES);
return true;
}
}
}
?>


--------------------------------------------------------------

Et en transferant des photos de moins de 100 Ko j'ai une bande blanche en bas de la photo, sauf pour celle de 60Ko, pas de bande.
Visible ici par ex : [ Lien ]

Merci d'avance pour votre aide parce que la je tourne en rond.
vendredi 16 octobre 2009 à 20:53:21 | Re : Transfert d'images en base de données

neigedhiver

Salut,

Je pense que la réponse ne se trouve pas dans ton script, mais du côté de ta table MySQL, plus précisément, le type de champ utilisé pour stocker tes photos...
Jette un oeil ici : Capacités des colonnes

BLOB => 2^16 + 1 octet. Soit 65536+1 = 65537 octets.
Or 65537 octet, c'est, en puissance de 2, exactement 64Kio (65,5Ko)

Conclusion, dans un champ de type BLOB, on ne PEUT PAS stocker plus de 64Ko de données. Si tes photos peuvent aller jusqu'à 100Ko, il faut alors changer le type de ta colonne pour MEDIUMBLOB :

Code :
ALTER TABLE `images` MODIFY `img_blob` MEDIUMBLOB NULL;


Je profite de l'occasion pour attirer ton attention sur la protection que tu fais sur img_blob : c'est infiniment insuffisant. Utilise de préférence mysql_real_escape_string() qui protègera le contenu des caractères binaires qui pourraient causer ta perte ;)

--
Neige

N'hésitez pas à lire la doc


Cette discussion est classée dans : images, php, mysql, img, query


Répondre à ce message

Sujets en rapport avec ce message

Php et mySql => Pb de boucle [ par ibti25 ] Bonjour,J'ai un souci pour récupérer tous les sous familles de mes familles. En effet, j'ai une table famille :CREATE TABLE famille ( idfamille int(1 deux pb dans mon code php!! [ par dev10 ] voilà mon prbolème, si squelqu'un peut m'aiderWarning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\....doc.php on l afficher images blob dans table mysql [ par RealKEV1 ] Bonjour,Seriez-vous m'aider pour afficher toutes les images de type Blob de ma table MySql???Voici mon code, mais ça ne boucle pas sur les images, ça php/mysql et album photo sécurisé [ par pumbaa ] Salut!!   J’ai crée un album d’image avec php/MySQL. Les images ce trouvent Php - MySql + Images [ par 68_abis ] Bonjour à tous,Peut-être cette question à e-t-elle été déjà posée, mais je n'en ai pas trouvée de traces, et les nombreux codes sources que j'ai vu ne multiple upload a mysql avec php [ par Xavihb ] Salut,J'aurais besoin de savoir comment faire un multiple upload d'images à une base de données mySQL à l'aide de PHP. Les champs des images  sont du Paramètre d'entrée dans un script PHP [ par zeldoi5 ] Bonjour tout le monde, je ne sais pas si le titre est suffisemment évocateur, mais je voudrais passer le résultat de requêtes SQL (sur ma base MySQL) Help !!! probleme de connection BDD et affichage dans une pasge php [ par chapata ] Bonjour a tous,J'ai installer EasyPHP en début de semaine et je me suis mit depuis peu aux BDD (mysql et php), et j'ai une question pour vous :J'ai cr quand faire un mysql_close() [ par davwart ] Bonjour à tous. J'ai retrouvé une classe MySqlDb (classe pour gérer une db mysql donc..) ce matin. En regardant le code, je me suis rendu compte qu'à Fonction php [ par sensosofttunisiee ] Salut,j'ai un dossier "images" qui contients 50 images nommées "IMG_1,IMG_2,IMG_3,...,IMG_50" , je veux faire une fonction en php qui me permets d'aff


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales