PHP实现读取远程文件功能

 

在昨天做端口测试的基础上研究一下PHP上传与下载的代码,结果想起前段时间笔试题有一道题是在上传文件时显示文件内容,让我对PHP实现读取远程文件的功能很感兴趣,以下是代码:

01 function urlfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE  , $ip = '', $timeout = 15, $block = TRUE, $encodetype  = 'URLENCODE') {
02           $return = '';
03           $matches = parse_url($url);
04           $host = $matches['host'];
05           $path = $matches['path'] ? $matches['path'].(isset($matches['query']) ? '?'.$matches['query'] : '') : '/';
06           $port = !empty($matches['port']) ? $matches['port'] : 80;
07  
08           if($post) {
09             $out = "POST $path HTTP/1.0\r\n";
10             $out .= "Accept: */*\r\n";
11             $out .= "Accept-Language: zh-cn\r\n";
12             $boundary = $encodetype == 'URLENCODE' ? '' : ';'.substr($post, 0, trim(strpos($post, "\n")));
13             $out .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencoded\r\n" : "Content-Type: multipart/form-data$boundary\r\n";
14             $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
15             $out .= "Host: $host\r\n";
16             $out .= 'Content-Length: '.strlen($post)."\r\n";
17             $out .= "Connection: Close\r\n";
18             $out .= "Cache-Control: no-cache\r\n";
19             $out .= "Cookie: $cookie\r\n\r\n";
20             $out .= $post;
21           } else {
22             $out = "GET $path HTTP/1.0\r\n";
23             $out .= "Accept: */*\r\n";
24             $out .= "Accept-Language: zh-cn\r\n";
25             $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
26             $out .= "Host: $host\r\n";
27             $out .= "Referer: \r\n";
28             $out .= "Connection: Close\r\n";
29             $out .= "Cookie: $cookie\r\n\r\n";
30           }
31           $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr,$timeout);
32           if(!$fp) {
33             return '';
34           } else {
35             stream_set_blocking($fp, $block);
36             stream_set_timeout($fp, $timeout);
37             @fwrite($fp, $out);
38             $status = stream_get_meta_data($fp);
39             if(!$status['timed_out']) {
40               while (!feof($fp)) {
41                 if(($header = @fgets($fp)) && ($header == "\r\n"   $header =="\n")) {
42                   break;
43                 }
44               }
45  
46               $stop = false;
47               while(!feof($fp) && !$stop) {
48                 $data = fread($fp, ($limit == 0  $limit > 8192 ? 8192 :$limit));
49                 $return .= $data;
50                 if($limit) {
51                   $limit -= strlen($data);
52                   $stop = $limit <= 0;
53                 }
54               }
55             }
56             @fclose($fp);
57             return $return;
58           }
59         }
时间: 2024-10-05 09:14:46

PHP实现读取远程文件功能的相关文章

C#读取远程文件WebClient 方法读取操作超时

问题描述 读取远程文件WebClient方法读取第一次正常,第二次读取时就卡住报操作超时问题,以下是代码WebClientwc=newWebClient();Streamsm=wc.OpenRead(AutoUpdaterFileName);//第二次到这里就卡住,后会报操作超时XmlTextReaderxml=newXmlTextReader(sm);while(xml.Read()){if(xml.Name=="UpdateTime"){LastUpdateTime=xml.Get

asp读取远程文件并保存到本地代码_小偷/采集

<% dim act,ifLogin,loginUrl,loginActUrl,loginData,fileUrl,fileName act=request.QueryString("act") if(act="do") then   ifLogin=Cint(request.QueryString("ifLogin"))  loginActUrl=request.Form("loginActUrl")  loginDa

asp xmlhttp_读取远程文件

在本教程,我们将使用微软的XMLHTTP请求对象的网页远程地址从我们的服务器.这个对象包含在微软的XML的DOM组成部分,这可能是安装在您的服务器. 传统使用的微软的XMLHTTP对象是访问远程XML文件.在此基础教程,我们将用它来获取文字代码从一台远程服务器.这将是相同的信息我们的浏览器会在访问该网页. 例如在波纹管,我们已成立一个变量命名GotothisURL其中包含的网页的网址,我们将要求我们的服务器访问.应对这次访问将保存到变量ResponsePage . <%   GotothisUR

用JAVA实现缓冲多线程无阻塞读取远程文件

http://www.vipcn.com/chengxukaifa/Java/325445.html

asp+xmlhttp 读取远程文件内容

Function GetHttpPage(HttpUrl)    If IsNull(HttpUrl)=True Or HttpUrl="$False$" Then       GetHttpPage="$False$"       Exit Function    End If    Dim Http    Set Http=server.createobject("MSXML2.XMLHTTP")    Http.open "GET

jQuery 行级解析读取XML文件(附源码)_jquery

最近在做一个项目,因为页面使用了Cookie,所以要判断用户的浏览器是否支持Cookie,并提示用户如何开启浏览器的Cookie功能.同时,整个项目要配置多语言支持,包括中文.越南语.日语和英语,所以必须有语言配置文件.项目中应用jQuery解析读取XML语言配置文件来实现语言的调度.这是jQuery解析读取XML文件功能的测试源码,现拿出来分享.目录结构: main.css文件代码: 复制代码 代码如下: @CHARSET "UTF-8"; * { margin: 0px; padd

JavaScript使用Microsoft.XMLDOM读取远程XML文件内容

  JS使用Microsoft.XMLDOM读取远程XML文件内容,为啥要远程读取呢?其实举个例子就明白了,因为最近要搞一个远程读取天气信息的ajax页面,天气信息是远程网站的内容,是以XML文件方式存在的,所以我们要实现AJAX,就需要在JS中读取XML文件,开始觉得好难啊,其实做出来,也就不这么认为了. 在上述代码中,http://****.com/ajax/weather.asp?subcode=b55就是远程网站的天气XML信息,用ASP生成的xml,这里直接调用了XMLDOM组件进行读

was中新建企业应用程序时,选择远程文件的功能是如何实现的啊?

问题描述 我现在有个项目要实现类似选择远程文件的功能,请各位大侠帮帮忙哦!!!jsptomcatjava来实现.在jsp页面中调整目录结构及选择相应的文件.点击文件名称后得到文件的绝对路径. 解决方案

c++读取一个文件,英文字母,完成以下功能

问题描述 c++读取一个文件,英文字母,完成以下功能 1.统计26个字母出现频率 2.输入一个字母,找出和它最亲密的三个字母(最亲密的意思是:和它一起相邻出现的次数最多) 3.找出出现频率最高的五个单词并排序 4.将前三题中的结果以合理的形式输出到文件result.txt 解决方案 如果要"输入一个字母,找出和它最亲密的三个字母(最亲密的意思是:和它一起相邻出现的次数最多)"代码,请先采纳我的回答. 解决方案二: http://zhidao.baidu.com/link?url=fY5