Bonjour,
je cherche à réaliser un fichier de réception d'image en php à partir d'un envoi d'une application java.
Mon pb est que je reçois pas d'information concernant l'image !
L'envoi se fait en post, je sais que l'appli java communique avec mon fichier d'upload car j'ai des traces qui reçoivent des informations textes, mais aucune information reçu dans les $_file.
Voici mon code pour l'upload :
Une idée ?
<?php
if($_SERVER['HTTP_HOST'] == "127.0.0.1")
{
$url = "
http://127.0.0.1/essai//image/".$_FILES["file"]["name"]; // Fichier Destination - DOIT EXISTER !
}
// lecture des header renvoyés
$header = get_headers($url);
// un str-replace tout pourri pas optimisé
$nomFichier = $_FILES["file"]["name"];
$nomFichier1 = str_replace('é','e',$nomFichier);
$nomFichier2 = str_replace('è','e',$nomFichier1);
$nomFichier3 = str_replace('â','a',$nomFichier2);
$nomFichier4 = str_replace('à','a',$nomFichier3);
$nomFichier5 = str_replace('ê','e',$nomFichier4);
$nomFichier6 = str_replace('ë','e',$nomFichier5);
$nomFichier7 = str_replace('ï','i',$nomFichier6);
$nomFichier8 = str_replace('î','i',$nomFichier7);
$nomFichier9 = str_replace('û','u',$nomFichier8);
$nomFichier10 = str_replace('ù','u',$nomFichier9);
$nomFichier11 = str_replace('ü','u',$nomFichier10);
$nomFichier12 = str_replace('ç','c',$nomFichier11);
$nomFichier = str_replace(' ','_',$nomFichier12);
$chemin_image = $nomFichier;
if ($_FILES['file']['error'])
{
switch ($_FILES['file']['error'])
{
case 1: // UPLOAD_ERR_INI_SIZE
echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
error_log("UPLOAD_ERR_INI_SIZE : ".$_FILES['file']['error'], 0);
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
error_log("UPLOAD_ERR_FORM_SIZE : ".$_FILES['file']['error'], 0);
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
error_log("UPLOAD_ERR_PARTIAL : ".$_FILES['file']['error'], 0);
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !";
error_log("UPLOAD_ERR_NO_FILE : ".$_FILES['file']['error'], 0);
break;
}
}
else
{
//vaut 0 soit UPLOAD_ERR_OK
// ce qui signifie qu'il n'y a eu aucune erreur
echo "error : ".$_FILES['file']['error']."<br>";
}
?>
<html>
<head>
<title>Upload d'image ou de Fichiers.</title>
<style type="text/css">
body{ color: #333; font: 10px 'Lucida Grande', Verdana; }
</style>
</head>
<body topmargin="0">
<?php
//Définition des variables :
ini_set( 'register_globals' , 0 ); // permet de récupérer les variables $size, $width, $height
$MAX_SIZE = 2097152;
// Taille maximum du fichier (ici : 2MO)
// Fichier Destination - DOIT EXISTER !
if($_SERVER['HTTP_HOST'] == "127.0.0.1")
{
$DESTINATION_FOLDER = $_SERVER["DOCUMENT_ROOT"]."/essai/image/"; // Fichier Destination - DOIT EXISTER !
}
$AUTH_EXT = array(".jpg", ".png", ".jpeg", ".gif", ".JPEG", ".JPG", ".GIF", ".PNG"); // types de fichiers supportés
$RETURN_LINK = $_SERVER['HTTP_REFERER']; // Récupère la variable $_SERVER['HTTP_REFERER'] pour createReturnLink()
$chaine = code_aleatoire(); // Définit un code aléatoire pour l'image
$poidsFichier = 0; // On définit $poids fichier à 0 pour que le script ne plante pas si aucun fichier n'est choisi.
if(!empty($_FILES["file"]["name"]))
{
// si la variable $_FILES["file"]["name"] n'est pas vide
// cela veut dire que le server reçoit l'info qu'un fichier est
// envoyé, on définit donc les variables relative au fichier
$nomTemporaire = $_FILES["file"]["tmp_name"] ;
$nomFichier = $_FILES["file"]["name"] ; // nom du fichier uploadé
$typeFichier = $_FILES["file"]["type"] ;
$poidsFichier = $_FILES["file"]["size"] ; // poids en Octets
$poidsFichierK = $poidsFichier/1024; // Convertion du poids fichi0er d'Octets en KOctets
$poidsFichierK = sprintf("%.0f", $poidsFichierK);
$codeErreur = $_FILES["file"]["error"] ;
$extension = strrchr($nomFichier, "."); // on récupère l'extentions
$size = GetImageSize($_FILES["file"]["tmp_name"]);
$width = $size[0];
$height = $size[1];
$ext = $size[2]; // donne le type de fichier reçu
$nomReelFichier = $chaine."_".$nomFichier;
// nom du fichier sur le server
}
// cette partie de code vérifie si l'extention du fichier est bien correcte vis à vis de sa signature
// si vous uploadez des fichiers autres que des gif, jpg, jpeg, bmp, png pensez à commenter ou supprimez ce if
// sinon ça ne marchera pas !
if ($ext xor 1 || $ext xor 2 || $ext xor 3){
echo $ext;
echo "<p align='center'>";
echo "format incorrect <br />";
createReturnLink();
echo "</p>";
exit();
}
// Définition des fonctions
// Création du raccouri de retour
function createReturnLink(){
global $RETURN_LINK;
echo "<a href='".$RETURN_LINK."' class='lien_blanc'>Retour</a><br>";
}
// regarde si l'extension du fichier est dans le tableau AUTH_EXT
function isExtAuthorized($ext){
global $AUTH_EXT;
if(in_array($ext, $AUTH_EXT)){
return true;
}else{
return false;
}
}
// Génère un code aléatoire de 5 caractères pour charques images
function code_aleatoire()
{
$alphabet = 'abcdefghijklmnopqrstuvwxyz';
$alphabet .= '1234567890';
$chaine = '';
for($i=0;$i < 5;$i++)
{
$chaine .= substr($alphabet,rand()%(strlen($alphabet)),1);
}
return $chaine;
}
// le le poids du fichier est diférent de 0
if($poidsFichier <> 0)
{
// si le poid di fichier n'est pas supérieur à la taille maximum
if($poidsFichier < $MAX_SIZE)
{
// si l'extension est reconnu et correct
if(isExtAuthorized($extension))
{
// deplacement du fichier avec copy, le fonction move_uploaded_file me générant une erreur
$uploadOk = copy($nomTemporaire, $DESTINATION_FOLDER.$chaine."_".$nomFichier);
if($uploadOk)
{
$tailleKo = $MAX_SIZE / 1000;
echo "<table width='900' align='center' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td> </td>
<td><br /></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><br />Taille : ".$tailleKo."</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><br />Chaine aléatoire : ".$chaine."</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><br />Nom du fichier : ".$_SERVER["DOCUMENT_ROOT"]."/essai/image/".$nomReelFichier."</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><br />Poids : ".$poidsFichierK." Ko</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><br />Width x Height : ".$width." x ".$height."</td>
<td> </td>
</tr>
<tr>
<td> </td>";
if($_SERVER['HTTP_HOST'] == "127.0.0.1")
{
echo "<td><br /><img src='
http://127.0.0.1/essai/image/".$nomReelFichier."' width='200' border='0' /></td>";
}
echo "
<td> </td>
</tr>
</table>";
}
else
{
echo "<table width='900' align='center' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td> </td>
<td><br />UPLOAD KO</td>
<td> </td>
</tr>
</table>";
}
}
}
}
//trace et log
echo "destination + chaine + nom fichier : ".$DESTINATION_FOLDER.$chaine."_".$nomFichier;
error_log("destination + chaine + nom fichier : ".$DESTINATION_FOLDER.$chaine."_".$nomFichier, 0);
foreach($header as $elem => $valeur)
{
echo $elem." ".$valeur."<br />";
error_log("header : ".$elem." ".$valeur, 0);
}
error_log("tmp_name : ".$_FILES["file"]["tmp_name"], 0);
error_log("name : ".$_FILES["file"]["name"], 0);
error_log("type : ".$_FILES["file"]["type"], 0);
error_log("size : ".$_FILES["file"]["size"], 0);
error_log("error : ".$_FILES["file"]["error"], 0);
echo "nomFichier : ".$nomFichier;
echo "POST : ".$_POST["message"]."<br>";
error_log("POST : ".$_POST["message"], 0);
echo "tmp_name : ".$_FILES["file"]["tmp_name"]."<br>";
echo "HTTP_HOST : ".$_SERVER['HTTP_HOST']."<br>";
echo "<br>nom fichier sans accents : ".$chemin_image."<br>";
error_log("nom fichier sans accents : ".$chemin_image, 0);
echo "DOCUMENT_ROOT : ".$_SERVER["DOCUMENT_ROOT"]."<br>";
error_log("DOCUMENT_ROOT : ".$_SERVER["DOCUMENT_ROOT"], 0);
echo "repertoire : ".$DESTINATION_FOLDER."<br>";
error_log("repertoire : ".$DESTINATION_FOLDER, 0);
?>
</body>
</html>