Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
Je suis occupé de modificier un petit script, celui-ci contient un code php pour uploader des photos JPG, PNG, GIF, j'aurai voulu modifier ce script légèrement pour pouvoir uploader aussi des fichiers. rar, le problème c'est que je comprend pas certaines choses, merci de m'aider! J'ai déjà regarder certains tutoriaux pour l'upload bien entendu, mais c'est ce code que j'aimerai adapter pour avoir un code identique dans tout le site web, merci ...
Cette fonction est faite pour l'envoi d'image et très sécurisée graçe à la fonction getimagesize car c'est uniquement des images qui peuvent être uploadées, mais si je voudrai mettre des fichiers .rar comment pourrais je faire?
J'ai lu ce tutorial très intéressant aussi: http://www.vulgarisation-informatique.c … ad-php.php
Formulaire pour ajouter un fichier photo
[c]<tr>
<td nowrap="nowrap" bgcolor="#dadada">Photo 1 :</td>
<td bgcolor="#e9e9e9"><input name="photo1" type="text" id="photo1" size="30" value="<?php echo $data_annonce['photo']; ?>" />
<a href="#null" onclick="OpenCenterPopUp('upload.php?champ=photo1')"><img src="images/disque-dur.jpg" alt="upload" width="21" height="21" border="0" align="middle" style="vertical-align:middle" /></a> <?php echo $language['info_add_photo']; ?></td>
</tr>[/c]
Source de upload.php
[c]if(isset($_POST['upload_photo']))
{
//-- On lance l'upload de la photo
$resultat = $petite_annonces -> upload_photo($_FILES['fichier']['name'],$_FILES['fichier']['size'],$_FILES['fichier']['tmp_name'],"../");
//-- Preparation des variables
$nom_fichier = $resultat['image_reel'];
$url_reel = $resultat['image_reel'];
$poids = $resultat['poids'];
$resolution = $resultat['resolution'];
$resultat = $resultat['resultat'];
//-- Traitement du résultat
if($resultat=="succes")
{
header("location:upload.php?fichier=".urlencode($url_reel)."&champ=".$_POST['champ']."&MoveUrlFile=1&msg=1");
}
else
{
header("location:upload.php?error=1&champ=".$_POST['champ']."");
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Uploader une photo</title>
<script>
<?php if(isset($_GET['MoveUrlFile'])) { ?>
function MoveUrlFile()
{
window.opener.document.getElementById('<?php echo $_GET['champ']; ?>').value='<?php echo urldecode($_GET['fichier']); ?>';
//window.close();
}
<?php } ?>
//--
function GoUpload()
{
document.getElementById('load').style.display='block';
}
</script>
<style>
body {
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
color:#000;
margin:0px;
padding:0px
}
h1 {
font-size:16px;
font-weight:bold
}
a {
color:#F60;
text-decoration:none
}
</style>
</head>
<?php if(isset($_GET['MoveUrlFile'])) echo '<body onload="MoveUrlFile()">'; else echo '<body>'; ?>
<div id="load" style="height:344px; background-color:#FFF; display:none; position:absolute; width:396px; text-align:center">
<p><strong>Veuillez patienter, chargement en cours.</strong></p>
<p><img src="images/progressbar10.gif" width="200" height="10" /></p>
<p>Cela peut prendre plusieurs minutes</p>
<p><img src="images/floppy_disk_48.png" width="48" height="48" /></p>
</div>
<div style="background-image:url(images/fenetre-upload-script-petite-annonces_03.jpg); width:396px; height:344px; top:0px">
<div style="padding-left:20px; padding-top:50px; padding-right:10px;">
<?php
if(isset($_GET['msg']))
{
echo '<p align="center"><img src="images/accepted_48.png" width="48" height="48" alt="ok" /></p>
<p align="center">La photo a bien été ajoutée</p>
<p align="center">[ <a href="javascript:window.close();">Fermer la page</a> ]';
}
else if(isset($_GET['error']))
{
echo '<p align="center"><img src="images/cancel_48.png" width="48" height="48" alt="ok" /></p>
<p align="center">Erreur lors de l\'enregistrement de la photo</p>
<p align="center">[ <a href="javascript:window.close();">Fermer la page</a> ]';
}
else
{
?>
<p>Format de photo acceptés : JPG, PNG, GIF (MAX 2Mo)</p>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input type="hidden" name="upload_photo" value="1" />
<input type="hidden" name="champ" value="<?php echo $_GET['champ']; ?>" />
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td><input name="fichier" type="file" id="fichier" size="25" /></td>
<td><input type="submit" name="button" id="button" value="Envoyer" onclick="GoUpload()" /></td>
</tr>
</table>
</form>
<p>Sélectionnez le fichier sur votre ordinateur, l'envoi peut prendre plusieurs minutes.</p>
<?php } ?>
</div>
</div>
</body>
</html>[/c]
Fonction upload
[c]function upload_photo($fichier_name,$fichier_size,$fichier_tmp_name,$destination)
{
//-- Generation du de l'avatar
$nom_fichier = time();
//-- Definition des variables
$target = $destination.'upload/'; // Repertoire cible
$nom_file = strtolower($fichier_name);
$taille = $fichier_size;
$tmp = $fichier_tmp_name;
$max_size = 5000;
$width_max = 100;
$height_max = 100;
//-- Verification du poids de l'image
if($taille>=2097100)
{
//-- On retourn les parametres
return array(
"resultat" => "false",
"message" => "La photos est trop lourde",
);
}
//-- Preparation des variables
$nom_du_fichier = $nom_fichier.".".strtolower(substr($nom_file, -3));
$image_reel = "photo-".$nom_fichier.".".strtolower(substr($nom_file, -3));
//-- Upload de l'image
if(move_uploaded_file($tmp,$target.$nom_file))
{
$this->miniature($target.$nom_file,800,600,$target.$image_reel,75);
}
else
{
//-- On retourn les parametres
return array(
"resultat" => "false",
);
}
// On récupère les dimensions du fichier
list($width_orig, $height_orig, $type) = getimagesize($target.$image_reel);
//-- Calcule du poids du fichier
$poids_photo = filesize($target.$image_reel);
//-- Suppression de l'image temporaire
unlink($target.$nom_file);
//-- On retourn les parametres
return array(
"message" => "La photo a bien été enregistrée",
"fichier" => $image_reel,
"image_reel" => $image_reel,
"poids" => $poids_photo,
"resolution" => $width_orig."x".$height_orig,
"resultat" => "succes",
);
}
//-- Fonction : Deconnexion d'une annonce[/c]
Fonction miniature, plus utile ici dans mon cas:
[c]function miniature($image,$width,$height,$rep,$qualite)
{
//-- On augmente la memoire de php
ini_set("memory_limit","50M");
// Cacul des nouvelles dimensions
list($width_orig, $height_orig, $type) = getimagesize($image);
//-- On calcule les proportio,
if($width_orig > $width or $height_orig > $height)
{
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig)
{
$width = $height*$ratio_orig;
$lance_resize = 1;
}
else
{
$height = $width/$ratio_orig;
$lance_resize = 1;
}
}
else
{
$lance_resize = 0;
$width = $width_orig;
$height = $height_orig;
}
// Redimensionnement
$image_p = imagecreatetruecolor($width, $height);
//-- Type 1 : GIF
if($type == "1")
{
copy($image,$rep);
}
//-- Type 2 : JPG
if($type == "2")
{
//-- Creation d'une image jpeg
$image = imagecreatefromjpeg($image);
//-- On copy la nouvelle image
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
//-- Enregistrement de la miniature
imagejpeg($image_p, $rep, $qualite);
}
//-- Type 3 : PNG
if($type == "3")
{
if($lance_resize==1)
{
$image = imagecreatefrompng($image);
$transparent = imageColorAllocate($image_p, 0, 0, 0);
$red = imageColorAllocate($image_p, 255, 50, 50);
imageColorTransparent($image_p, $transparent);
imageFilledRectangle($image_p, 0, 0, 640-1, 100-1, $transparent);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
}
//--
if($lance_resize==1)
{
imagepng($image_p, $rep,0);
}
else
{
copy($image,$rep);
}
}
//--
return true;
}
//-- Enregistrement de la photo sur le serveur[/c]
Dernière modification par umo (05-07-2009 10:04:35)
Hors ligne
Je ne me suis pas amusé à lire ta flopée de code mais en gros tu cherches à vérifier la taille non ?
En PHP après l'upload (donc quand le fichier se trouve encore en dossier temporaire) tu as la variable $_FILES['fichier_source']['size'] qui te permet de récupérer la taille du fichier.
Sinon lors de l'upload tu as la possibilité de fixer la taille maximum acceptée par le forumulaire :
<input type="hidden" name="MAX_FILE_SIZE" value="ta taille maxi en octets" />
Hors ligne
Pages :: 1