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é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.