2010-08-10 35 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