用php实现远程网络文件下载到服务器

前段时间一直在wordpress的在线更新是如果实现的。分析了一下,大致逻辑应该是先远程下载网络打包文件,然后解压执行替换。那么如何实现下载远程网络文件呢?今天无意间找到这段代码:
php源代码:

<form method=”post”>
<input name=”url” size=”50″ />
<input name=”submit” type=”submit” />
</form>
< ?php // maximum execution time in seconds set_time_limit (24 * 60 * 60); if (!isset($_POST['submit'])) die(); // folder to save downloaded files to. must end with slash $destination_folder = 'temp/'; $url = $_POST['url']; $newfname = $destination_folder . basename($url); $file = fopen ($url, "rb"); if ($file) { $newf = fopen ($newfname, "wb"); if ($newf) while(!feof($file)) { fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 ); } } if ($file) { fclose($file); } if ($newf) { fclose($newf); } ?>

ASP源代码:

< % function downfilea(d_target, s_target) On Error Resume Next dim myhttp, objstream set myhttp = server.createobject( "MSXML2.XMLHTTP ") myhttp.open "GET ", d_target, false myhttp.send() set objstream = Server.CreateObject( "adodb.stream ") objstream.Type = 1 objstream.Mode = 3 objstream.Open objstream.Write myhttp.responseBody objstream.SaveToFile s_target, 2 if err.number <> 0 then err.Clear
end function

downfilea “http://www.abc.com/xxx.rar “, Server.MapPath( “down/xxx.rar “)
Response.write “ok ”
%>
还有asp.net版本的源码(未测试)

using System;
using System.Net;
using System.IO;

class DownloadFile;
{
static void Main(string[] args)
{
//你的远程文件
string siteURL=”http://www.abc.com/xxx.rar”;
//下载到本地的路径及文件名
string fileName=”c:\\xxx.rar”;
//实例化一个WebClient
WebClient client=new WebClient();
//调用WebClient的DownloadFile方法
client.DownloadFile(siteURL,fileName);
}
}

注意事项:
1.相关的目录可能需要建立.
2.其中php版本的源码是支持自定义url的,但asp、asp.net版本的并没有提供自定义.
3.在拷贝大文件时,国内估计支持欠佳.因为考虑到程序的超时时间,但在国外支持很好.
比如将一个近300M的文件转移到另一个服务器上耗费时间是28秒.这是国内无法想象的.

相关日志

发表于:2009-09-16 06:10:02 at 06:10 分类:代码 7条评论 Tags:, ,

7 Comments»

  1. precomx说道:

    没有解压并替换的代码?

  2. what说道:

    请问这个东西怎么用? 我打开以后出来两个框框,然后怎么填呢?谢谢

  3. 风吹走了我说道:

    这个东西我正需要呢,谢谢老大。我想远程复制wordpress

  4. timmy说道:

    请问这是不是相当于服务器在下载一个文件,而与我本机无关?

    • simon说道:

      是的,就是直接把文件直接用这个程序下载存到了服务器上。

      • what说道:

        请问这个东西怎么用? 我打开以后出来两个框框,然后怎么填呢?麻烦告诉我一下,谢谢

发表评论

(必填)

(必填)您的电子邮箱不会被公开。

*

正在加载信息...

Archives