[résolu]Transfer de fichier depuis un serveur sans ftp

Petit nouveau ! | 2 Messages

14 sept. 2007, 10:14

Bonjour tout le monde.

J'aimerais savoir si il est possible de transférer un fichier depuis un serveur vers des sites de sharing genre stage6 megaupload ou rapidshare donc sans passer par ftp.
Pour être plus précis, pour uploader sur la pluspar des sites de partage il faut indiquer un fichier se trouvant sur son ordinateur, est il possible d'indiquer un fichier se trouvant sur un serveur dédié par exemple ?

Pour expliquer ma question, j'ai pas mal de fichiers volumineux asser ancien (rien d'illegal) que j'ai mi beaucoup de temps à uploader (connexion de merde quoi :p ) sur un serveur dédié que je voudrais laisser à disposition de mes visiteurs tout en faisant de la place sur mon serveur, mais je peu pas tout réuploader donc je voulais savoir si le serveur pouvait le faire à ma place ?

Voilà merci pour les réponses :)
Modifié en dernier par polux le 16 sept. 2007, 11:56, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

14 sept. 2007, 10:17

Bonjour,

Oui ça devrait être possible en utilisant CURL mais ça risque d'être assez délicat à mettre en place car généralement ces sites utilisent une captcha pour l'upload donc il faudra que tu gère ça correctement dans ton script d'upload.

http://fr.php.net/curl
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

14 sept. 2007, 10:30

Merci beaucoup pour la réponse rapide, je vais décortiquer ça, et voir comment ça marche :)

Edit: Bon j'édit mon message vu que j'ai réussi à faire ce que je voulais
Je donne un petit exemple au cas ou ça interesserait des gens

Ce script marche pour le service dl.free.fr
<?
$postData['ufile'] = "@NOM_DU_FICHIER_QUE_VOUS_VOULEZ_ENVOYE";
$postData['mail1'] = "EMAIL_DU_DESTINATAIRE_DU_FICHIER";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "ADRESSE_DE_DESTINATION");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_REFERER, "");
$ret = curl_exec($ch);
if (!$ret) {
    echo curl_error($ch);
} else {
    echo 'Envoi réussi, vous allez recevoir un Email !';
}
curl_close($ch);
?>
L'url de destination est donné quand on fait une recherche d'information sur la page dans l'onglet "Formulaires" elle commence par "http://dl.free.fr/upload.pl?" suivit de plein de chiffres

Ce script doit être adapté pour les différent sites, en général il suffit de modifier les $postData et biensur l'adresse de destination. Pour dl.free.fr, on a pas besoin d'avoir le résultat de la demande vu que le lien est envoyé directement par email.

Parcontre pour megaupload par exemple le lien est directement donné sur la page, voici le script modifier pour megaupload:
<?
$postData['UPLOAD_IDENTIFIER'] = "ID_A_RENSEIGNER_OBLIGATOIREMENT";
$postData['sessionid'] = "LE_MEME_ID_QUE_PRECEDEMENT";
$postData['file'] = "@NOM_DU_FICHIER_QUE_VOUS_VOULEZ_ENVOYE";
$postData['message'] = "MESSAGE_QUE_VOUS_VOULEZ";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "ADRESSE_DE_DESTINATION");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_REFERER, "");

$response = curl_exec($ch);
$response = htmlspecialchars($response);
echo "<pre>".$response."</pre>";
curl_close($ch);
?>
Pareil que pour dl.free.fr pour avoir l'adresse de destination, pour l'ID il se trouve à la fin de l'adresse de destiantion il est de forme "1056614841.1189938706".

Voilà, j'espère que ça aidera des gens :)