Transfert à la volé fichier URL -> FTP
1 message
• Page 1 sur 1
- molsy26
- Nouveau WRInaute

- Messages: 1
- Inscription: 9 Nov 2008
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
Lectures recommandées sur ce thème :
- Double fichier apres transfert ftp
- Déplacer un dossier ou un fichier d'un serveur FTP a un autre serveur FTP en php ???
- logiciel transfert ftp
- pb transfert sur log ftp
- transfert FTP , changement d'hebergeur
- Transfert automatique de fichiers vers un FTP
- Besoin aide pour transfert blogger.com/oxito via FTP
- erreur de transfert ftp et indexation google erronée sur page index...
- problème de fichier ftp
- fichier .htaccess sur FTP
Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl
- 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
