Dinesh Khadka
Dinesh Khadka

Reputation: 67

Uploading a File from a Remote Server to an FTP Server with PHP

How can I upload a remote file from a link for example, http://site.com/file.zip to an FTP server using PHP? I want to upload 'Vanilla Forum Software' to the server and my mobile data carrier charges high prices, so if I could upload the file w/o having to upload it from my mobile I could save money and get the job done too.

Upvotes: 4

Views: 8053

Answers (5)

GONZO
GONZO

Reputation: 39

Simply:

copy('ftp://user:[email protected]/file.txt', 'ftp://user:[email protected]/file.txt');

The PHP server will consume bandwidth upload and download simultaneously.

Upvotes: 1

Potion
Potion

Reputation: 102

Create a php script in a web-accessible folder on your target server, change the values of $remotefile and $localfile, point your browser to the script url and the file will be pulled.

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

Upvotes: 0

Jonas m
Jonas m

Reputation: 2734

Made you this function:

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.';
                }

    }

}

You may use it like this:

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

Hope it works well, remember to Chmod the destination folder 777. ((If you need it to upload to yet another FTP server, you could use one of the FTP scripts posted in the other comments))

Best regards. Jonas

Upvotes: 4

grunk
grunk

Reputation: 14938

A ) download the file via an 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) Upload the file on 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);

This just a quick example , there is probably lot of improvement which can be done on this code , but the main idea is here.

Note : if you have a dedicated server it's probably faster and easier to download the file with a call to wget.

More info on FTP can be found in the doc

Upvotes: 1

Niels
Niels

Reputation: 49919

Something like this

$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
    }
}

More info: http://php.net/manual/en/function.ftp-put.php

Upvotes: 1

Related Questions