Voici un script qui te permettra d'uploader une image à partir d'un formulaire ou à partir d'une URL. Tu dois simplement modifier le répertoire de destination ($repertoire) :
<?php
$script_name = "images.php";
$repertoire = "../img/";
if($mode=="copy") // Copier une image depuis une URL
{
echo "<h2>Copie d'image</h2>\n";
$er=0;
if(!preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/', $url, $url_ary)) $er=1;
if(empty($url_ary[4])) $er=1;
if($er==1) {
?><form name="form1" method="post" action="<? echo $script_name; ?>">
<p><b><font color="red">URL incomplète:</font></b>
<input name="url" type="text" id="url" size="100" value="<? echo $url; ?>">
<input type="submit" name="Submit" value="Copier">
<input name="mode" type="hidden" id="mode" value="copy">
<a href="<? echo $script_name; ?>">Annuler</a></p>
</form>
<?php
}
else
{
$maxsize = 100000;
$base_filename = substr($url_ary[4],strrpos($url_ary[4],"/")+1);
$base_get = '/' . $url_ary[4];
$port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;
if($base_filename=="") die("<h2>Impossible de télécharger l'image...</h2><p>Erreur de récupération du nom.</p></body></html>");
if ( !($fsock = fsockopen($url_ary[2], $port, $errno, $errstr)) )
{
die("<h2>Impossible de télécharger l'image...</h2><p>Pas de connexion.</p></body></html>");
}
fputs($fsock, "GET $base_get HTTP/1.1\r\n");
fputs($fsock, "Host: " . $url_ary[2] . "\r\n");
fputs($fsock, "Accept-Language: fr\r\n");
fputs($fsock, "Accept-Encoding: none\r\n");
fputs($fsock, "User-Agent: PHP\r\n");
fputs($fsock, "Connection: close\r\n\r\n");
unset($data);
while( !feof($fsock) )
{
$data .= fread($fsock, $maxsize);
}
fclose($fsock);
if (!preg_match('#Content-Length\: ([0-9]+)[^ /][\s]+#i', $data, $file_data1) || !preg_match('#Content-Type\: image/[x\-]*([a-z]+)[\s]+#i', $data, $file_data2))
{
die("<h2>Impossible de télécharger l'image...</h2><p>Aucune donnée.</p></body></html>");
}
$filesize = $file_data1[1];
$filetype = $file_data2[1];
if ( !$error && $filesize > 0 && $filesize < $maxsize )
{
$data = substr($data, strlen($data) - $filesize, $filesize);
$filename = $repertoire.$base_filename;
if(file_exists($filename)) echo "<p>Le fichier de destination ".$base_filename." existe déjà !</p>";
else
{
$fptr = fopen($filename, 'wb');
$bytes_written = fwrite($fptr, $data, $filesize);
fclose($fptr);
if ( $bytes_written != $filesize )
{
unlink($tmp_filename);
die("<h2>Impossible de télécharger l'image...</h2><p>Echec d'écriture.</p></body></html>");
}
echo "<p>".$base_filename." enregistré avec succès ! <img src='".$repertoire.$base_filename."'></p>";
}
}
else
{
die("<h2>Impossible de télécharger l'image...</h2><p>Fichier trop gros.</p></body></html>");
}
}
}
if($mode=="upload") // Envoyer une image
{
echo "<h2>Upload d'image</h2>\n";
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
// vérifications
if( !in_array( strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)), $extensions_ok) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['file']['tmp_name'])
and filesize($_FILES['file']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['file']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
//vérif
if(file_exists($repertoire.$dest_fichier)) echo "<p>Le fichier de destination existe déjà !</p>";
else {
// copie du fichier
move_uploaded_file($_FILES['file']['tmp_name'], $repertoire.$dest_fichier);
echo "<p>".$dest_fichier." envoyé avec succès ! <img src='".$repertoire.$dest_fichier."'></p>";
}
}
else{
echo "<p>".$erreur."</p>";
}
}
if($mode=="del") // Supprimer une image
{
if(!isset($file)) die("<h2>Aucun nom de fichier !</h2></body></html>");
if(!file_exists($repertoire.$file)) die("<h2>Fichier inexistant !</h2></body></html>");
if(isset($confirm))
{
if($confirm+10<time()) die("<h2>L'action a expirée...</h2></body></html>");
unlink($repertoire.$file);
echo "<h2>Entrée supprimée !</h2>";
}
else
{
echo "<h2>Supression d'une image ?</h2>\n";
echo "<p>Vous êtes sur le point de supprimer l'image '".$file."' qui ressemble à ça: <img src='".$repertoire.$file."'><br>";
echo "<b>Etes-vous sûr de vouloir continuer ?<br><font size=\"5\">";
echo "<a href='".$script_name."?mode=del&file=".$file."&confirm=".time()."'><font color='red'>Oui</font></a> - ";
echo "<a href='".$script_name."'><font color='green'>Non</font></a></font></b></p>\n";
}
}
?>
<h2>Ajout d'images</h2>
<form name="form1" method="post" action="<? echo $script_name; ?>">
<p>Copier une image depuis une URL:
<input name="url" type="text" id="url" value="http://" size="100">
<input type="submit" name="Submit" value="Copier">
<input name="mode" type="hidden" id="mode" value="copy">
</p>
</form>
<form action="<? echo $script_name; ?>" method="post" enctype="multipart/form-data" name="form2">
<p>Envoyer une image:
<input name="file" type="file" size="100">
<input type="submit" name="Submit" value="Envoyer">
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<input name="mode" type="hidden" id="mode" value="upload">
</p>
</form>