2011-11-16 7 views
4

Comment puis-je télécharger un fichier distant à partir d'un lien, par exemple, http://site.com/file.zip vers un serveur FTP en utilisant PHP? Je veux télécharger 'Vanilla Forum Software' sur le serveur et mon fournisseur de données mobile facture des prix élevés, donc si je pouvais télécharger le fichier sans avoir à le télécharger depuis mon mobile, je pourrais économiser de l'argent et faire le travail aussi.Téléchargement d'un fichier à partir d'un serveur distant vers un serveur FTP avec PHP

+1

Le fichier est-il trop gros pour rendre 'file_get_contents ('http://site.com/file.zip')' inutile? Je pense que le libellé de votre question est un peu tordu. Ma conjecture est que vous avez accès à votre hôte, où vous voulez télécharger le fichier distant. – Shef

Répondre

4

vous avez fait cette fonction:

function downloadfile($file, $path) { 
    if(isset($file) && isset($path)) { 
      $fc = implode('', file($file)); 
      $fp = explode('/', $file); 
      $fn = $fp[count($fp) - 1]; 

       if(file_exists($path . $fn)) { 
        $Files = fopen($path . $fn, 'w'); 
       } else { 
        $Files = fopen($path . $fn, 'x+'); 
       } 
       $Writes = fwrite($Files, $fc); 
       if ($Writes != 0){ 
        echo 'Saved at ' . $path . $fn . '.'; 
        fclose($Files); 
       } 
       else{ 
       echo 'Error.'; 
       } 

    } 

} 

Vous pouvez l'utiliser comme ceci:

downloadfile("http://www.webforless.dk/logo.png","folder/"); 

espère que cela fonctionne bien, souvenez-vous Chmod le dossier de destination 777. ((Si vous en avez besoin pour télécharger sur un autre serveur FTP, vous pouvez utiliser l'un des scripts FTP affichés dans l'autre commentaire s))

Cordialement. Jonas

+0

désolé pour mon anglais et ma réponse tardive. Ce que je voulais dire, c'est d'obtenir le fichier www.example.com/file.zip directement sur ftp.somesite.com sans télécharger ww.example.com/file.zip sur mon espace de stockage, puis de le télécharger sur ftp.somesite.com. Merci pour toutes vos réponses –

1

Quelque chose comme ça

$con=ftp_connect("ftp.yourdomain.com"); 
$login_result = ftp_login($con, "username", "password"); 
// check connection 
if ($conn_id && $login_result) { 
    // Upload 
    $upload = ftp_put($con, 'public_html/'.$name, "LOCAL PATH", FTP_BINARY); 
    if ($upload) { 
     // UPLOAD SUCCESS 
    } 
} 

Plus d'info: http://php.net/manual/en/function.ftp-put.php

1

A) télécharger le fichier via une URL:

$destination = fopen("tmp/myfile.ext","w"); 
//Myfile.ext is an example you should probably define the filename with the url. 
$source = fopen($url,"r"); 
while (!feof($source)) { 
    fwrite($destination,fread($source, 8192)); 
} 
fclose($source); 
fclose($destination); 

B) Téléchargez le fichier sur FTP:

$file = 'tmp/myfile.ext'; 
$fp = fopen($file, 'r'); 

$conn_id = ftp_connect($ftp_server); 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) { 
    echo "UPLOAD OK"; 
} else { 
    echo "ERROR"; 
} 
ftp_close($conn_id); 
fclose($fp); 

Ceci Juste un exemple rapide, il y a probablement beaucoup d'améliorations qui peuvent être faites sur ce code, mais l'idée principale est ici.

Remarque: si vous avez un serveur dédié, il est probablement plus rapide et plus facile de télécharger le fichier avec un appel à wget.

Plus d'informations sur FTP se trouve in the doc

0

Créez un script php dans un dossier accessible sur le Web sur votre serveur cible, modifiez les valeurs de $ remotefile et $ localfile, pointez votre navigateur sur l'url du script et le fichier sera extrait.

<?php 
$remotefile="http://sourceserver.com/myarchive.zip"; 
$localfile="imported_archive.zip"; 
if(!copy($remotefile, $localfile)) { 
    echo("Transfer Failed: $remotefile to $localfile"); 
} 
?> 
Questions connexes