2010-08-10 60 views
0

首先,我不知道這是否是我不得不問這個問題的地方;所以我會指望版主如果需要將其移動。通過URL將文件上傳到我的Linux PHP主機

我在GoDaddy上有一個Linux PHP網絡託管帳戶。

當我必須上傳文件時,我通常使用FTP,無論是客戶端還是主機的文件管理器。但是,如果該文件是我必須從另一個網站下載的文件,我寧願我是否可以直接將它「下載」到我的主機帳戶;原因是我在毛里求斯,我們的聯繫是世界上最慢的。所以我寧願使用主機的高帶寬(我假設它更高),以便傳輸更快。

所以,我的問題是:你有沒有人有我可以用來實現它的解決方案(PHP腳本,Java小程序或任何其他)?

由於提前,

優素福

+0

http://en.wikipedia.org/wiki/Wget我用它下載WordPress的直服務器 – Luke 2010-08-10 07:19:31

回答

0

Wget我用它下載WordPress的直服務器:

# Download the title page of example.com to a file 
# named "index.html". 
wget http://www.example.com/ 
# Download Wget's source code from the GNU ftp site. wget 
ftp://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz 

的例子是從上面的鏈接。

+0

這就是他不唯一不提,ssh訪問;)。我認爲他會在共享託管帳戶中發現這個問題。 – Christian 2010-08-10 07:24:37

+0

真實的故事。 :)沒有真的想想那 – Luke 2010-08-10 07:29:44

+0

啊!我有ssh訪問;儘管我不認爲我可以訪問wget;這是我昨天嘗試的第一件事;它們似乎限制了可用的命令。 – Yusuf 2010-08-10 11:19:59

2

首先,這可能是您服務器上的安全風險。

其次,這裏的小未經測試的代碼:

<?php 

echo 'get file...'; 

$data=file_get_contents('http://...target-url...'); 

if($data===false)die('Failed getting file.'); 

echo 'saving file...'; 

$succ=file_put_contents('...target-file...',$data); 

echo $succ ? 'Success' : 'Failed saving file'; 

?> 

可用腳本(放入文件 「down.php」 在Web根):

<?php 
    echo 'get file...'; 
    if(!isset($_REQUEST['from'])die('Fail: Parameter "from" not set.'); 
    if(!isset($_REQUEST['to'])die('Fail: Parameter "to" not set.'); 
    $data=file_get_contents($_REQUEST['from']); 
    if($data===false)die('Failed getting file.'); 
    echo 'saving file...'; 
    $succ=file_put_contents($_REQUEST['to'],$data); 
    echo $succ ? 'Success' : 'Failed saving file'; 
?> 

使用(在運行來自網絡瀏覽器):

http://yoursite.com/down.php?from=http://yourothersite.com/file-content.txt&to=/var/www/public_html/target.txt 

警告:請確保您在使用後刪除腳本,它是一個嚴重安全問題。

+0

原則上,是的 - 但它會試圖加載大文件(因爲OP說它是爲了避免帶寬問題....),因爲文件被加載到內存中 - 更好的解決方案是$ in =的fopen($網址, 'R'); $出=的fopen($文件, 'W'); while(!feof($ in))fputs($ out,fgets($ in,B​​UF_SIZE)); – symcbean 2010-08-10 08:14:10

+0

好點symcbean。我在運行上傳的SQL文件時遇到了這個問題,並通過緩衝修復了它。但是,無論是哪種情況,最終都會增加MAX MEMORY或MAX TIME。我的選擇一定會更快,但更多的內存消耗,而你的速度更慢,內存消耗更少。 – Christian 2010-08-10 23:12:06

+0

也許我會用這段代碼寫一段腳本然後......但是當我有一些空閒時間進行編碼時,我必須這樣做;我在尋找一個「懶惰」的解決方案:S – Yusuf 2010-08-11 04:43:38

0

基督教技巧使這個代碼更好。

您可以在您的主機上創建一個像d這樣的文件夾並使用密碼保護它!然後創建一個新的index.php,把beloow代碼就可以了

<?php 
echo 'Get file...'; 
$url = $_REQUEST['from']; 
$filename= preg_replace('/\\?.*/', '', basename($url)); 
$to ='dl/'.$filename; 
$data=file_get_contents($_REQUEST['from']); 
if($data===false)die('Failed getting file.'); 
echo "<br/>".'Saving file...'; 
$succ=file_put_contents($to,$data); 
echo $succ ? "<br/>".'Success' : "<br/>".'Failed saving file'; 
?> 

終於創建了一個名爲DL來存儲下載的文件的文件夾。

使用(從網絡瀏覽器中運行它):

http://yoursite.com/d/?from=http://yourothersite.com/file.txt