Transfert à la volé fichier URL -> FTP
1 message • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Transfert à la volé fichier URL -> FTP
Bonjour,
je suis debutant en php et j'aimerais savoir comment envoyer à la volé sur un serveur ftp un fichier contenu dans une url (je voudrais en quelque sorte que mon serveur soit une passerelle entre les 2 serveurs http -> ftp).
J'aimerais pouvoir transferer n'importe quel fichier (.rar, .zip, .exe, .jpg ...) et de n'importe quel taille (jusqu'à 10go)
J'ai vu dans ce forum et un autre 2 morceau de script intéressant mais je suis incapable de les mettre en commun pour que ca marche :
Et ce script pour copier un fichier image:
Aidez moi svp !!!!
je suis debutant en php et j'aimerais savoir comment envoyer à la volé sur un serveur ftp un fichier contenu dans une url (je voudrais en quelque sorte que mon serveur soit une passerelle entre les 2 serveurs http -> ftp).
J'aimerais pouvoir transferer n'importe quel fichier (.rar, .zip, .exe, .jpg ...) et de n'importe quel taille (jusqu'à 10go)
J'ai vu dans ce forum et un autre 2 morceau de script intéressant mais je suis incapable de les mettre en commun pour que ca marche :
- Code: Tout sélectionner
$handler = fopen($url_file, "r");
$contents = '';
if($handler)
while(!feof($handler))
$contents .= fread($handler, 8192);
fclose($handler);
$handlew = fopen("/home/ton_fichier.ext", "w");
fwrite($handlew, $contents);
fclose($handlew);
Et ce script pour copier un fichier image:
- Code: Tout sélectionner
<?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>
Aidez moi svp !!!!
1 message • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Suite de l'article sur le fichier .htaccess : l'URL rewriting
- Transfert de fichiers dans Google Talk
- Google signe avec Lycos Europe un accord sur la publicité ciblée
- Exalead rejoint le protocole Sitemaps.org
- Comment éviter de se faire voler son nom de domaine...
- Article sur le fichier .htaccess
- Robots.txt : Yahoo supporte les options avancées
- Vocabulaire du référencement : noms de domaine et URL
- Déclarer son fichier sitemap dans le fichier robots.txt
- Sitemaps : protocole commun pour Google, Yahoo et Live Search
Consultez la description détaillée des produits ou services de Google suivants : Google Co-Op
- Calcul du nombre de backlinks
Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

le forum