用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 functiondownfilea "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秒.这是国内无法想象的.
- 相关文章
- 解决远程连接服务器的最大连接数PHP服务器变量$_SERVER详解PHP中的正则表达式完整的editplus之php语法文件使用PHP通过GOOGLE翻译接口自动翻译文件PHP中rawurlencode将字符串编码成URL专用格式时与页面编码的关系全新学习PHP[第一天]PHP技巧:php过滤危险html代码php中计算时间差的几种方法PHP读取目录下所有文件的代码一个图形显示IP的PHP程序代码php下过滤HTML代码的函数ASP与PHP读取多张表(多张表的操作)越来越喜欢玩PHP了最近喜欢上PHP了[转载]关于ajax与php结合中文处理问题调用远程swf的方法远程MSSql数据库连接教程
当前共有7条评论,我也要发表: