2011-11-16 237 views
4

如何使用PHP將鏈接上的遠程文件(例如http://site.com/file.zip)上載到FTP服務器?我想上傳'Vanilla論壇軟件'到服務器,我的移動數據運營商收取高價,所以如果我可以上傳文件而不必從移動設備上傳它,我可以省錢並完成工作。使用PHP將文件從遠程服務器上傳到FTP服務器

+1

文件大是爲了讓'file_get_contents('http://site.com/file.zip')'無用嗎?我認爲你問題中的措辭有點扭曲。我的猜測是你可以訪問你的主機,你想上傳遠程文件。 – Shef

回答

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腳本之一s))

此致敬禮。 Jonas

+0

對不起,我的英語和我遲到的回覆。我的意思是將文件www.example.com/ file.zip直接下載到ftp.somesite.com,而無需將ww.example.com/ file.zip下載到我的存儲空間,然後將其上傳到ftp.somesite.com。感謝你的回覆 –

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

1

A)通過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)上傳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只是一個簡單的例子,這個代碼可能有很多改進,但主要思想在這裏。

注意:如果您有專用服務器,則可能通過調用wget下載文件可能更快更容易。

FTP的更多信息,可以發現in the doc

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"); 
} 
?> 
相關問題