使用PHP将文件从远程服务器上载到FTP服务器

时间:2011-11-16 10:05:05

标签: php ftp

如何使用PHP将链接(例如http://site.com/file.zip)中的远程文件上传到FTP服务器?我想将“香草论坛软件”上传到服务器,我的移动数据载体收取高价,所以如果我可以上传文件而不必从我的手机上传它,我可以省钱并完成工作。< / p>

5 个答案:

答案 0 :(得分:4)

让你成为这个职能:

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

    }

}

你可以这样使用它:

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

希望它运作良好,记得Chmod目标文件夹777。 ((如果你需要它上传到另一个FTP服务器,你可以使用其他评论中发布的一个FTP脚本))

祝你好运。纳斯

答案 1 :(得分:1)

像这样的东西

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

更多信息:http://php.net/manual/en/function.ftp-put.php

答案 2 :(得分:1)

A)通过网址下载文件:

$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)在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);

这只是一个简单的例子,在这段代码上可能会有很多改进,但主要的想法就在这里。

注意:如果您有专用服务器,通过调用wget下载文件可能更快更容易。

有关FTP的更多信息,请访问in the doc

答案 3 :(得分:1)

简单地:

copy('ftp://user:pass@from.com/file.txt', 'ftp://user:pass@dest.com/file.txt');

PHP服务器将同时消耗带宽上传和下载。

答案 4 :(得分:0)

在目标服务器上的Web可访问文件夹中创建一个php脚本,更改$ remotefile和$ localfile的值,将浏览器指向脚本URL并将文件拉出。

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