喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

$5.95 Web Hosting     

上一主题 下一主题
     
标题: 喜悦原创首发-由文件下载引起的  
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[广告]: Enom域名自助付费 自助注册 自助PUSH 主流域名COM等一律57.99元年
喜悦原创首发-由文件下载引起的

上次得到了这小小的一点奖励,继续写,支持一下.

本文本来于7.16就定稿,但可惜的是赶了个晚集,呵呵....

=====

初级版:
php提供了内置的函数,可以使用readfile() 来实现文件的直接输出.
readfile('1.mp3');

提高版:
你可以打开allow_url_fopen来输出外部的文件.
readfile('http://xxx/1.mp3');
但是如果你想用FTP的话,就需要这样做:
readfile(ftp_get($conn_id, $local_file, $server_file, FTP_BINARY));

中级版:
手册中有这么一句:
Note: Context support was added with PHP 5.0.0. For a description of contexts, refer to Reference CL, Stream Functions.

并且,偶想实现盗链.所以有了使用stream的代码
$context=array('http' => array ('header'=> 'Referer: http://xxxxxxx/'));
$xcontext = stream_context_create($context);
readfile('http://localhost/1.mp3',0,$xcontext);

这些代码运行的也不错.

高级版:
下面要做的就是断点续传的php实现.具体你怎么取得range,是你自己的事情.

$context=array('http' => array ('header'=> 'Range: bytes=1024-'));
$xcontext = stream_context_create($context);
readfile('http://localhost/1.mp3',0,$xcontext);

注意!不对了!

在调试了许多次后,发现php并不支持除200外的任何返回值.
偶向php提交了偶的bug报告.
http://bugs.php.net/bug.php?id=36857

欣慰的是,1天后得到了这样的消息,就算偶给php做了点小小的贡献...
This bug has been fixed in CVS.

(另:最喜欢看这句: Thank you for the report, and for helping us make PHP better.)


- Fixed bug #36857 (Added support for partial content fetching to the HTTP streams wrapper). (Ilia)
(Bug #36857 was fixed,bringing support for partial content fetching to the HTTP streams wrapper across all current PHP branches [Ilia])

参见:#36857

这样,你现在可以使用这段代码了(版本要求 4.X: >4.4.3RC1 5.X:>5.1.3)

终极版A:
$file = fsockopen("www.xxxx.com", 80, $errno, $errstr, 12);
fputs($file, "GET /xxxxxx HTTP/1.0\r\n");
fputs($file, "Host: www.xxxx.com\r\n");
fputs($file, "Referer: http://xxxxx/\r\n");
fputs($file, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n\r\n");

做完这些工作,你可以把这文件当普通文件用了.够简单吧...

终极版B:cURL
<?php

$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
这东西效率比纯粹的方法高不少.
由于它不是核心自带的东西,所以不做过多讨论

感谢大家跟偶绕了一大圈,解决了一个很简单的文件下载问题.

联系作者fcicq: fcicqbbs at gmail dot com.
如果有问题,或者错误,均可联系。呵呵。
版权声明:原创

最后一句:喜悦首发,严禁转帖
                          fcicq 2006.7.27




doc
2006-7-27 07:45 AM#1
查看资料  访问主页  发短消息  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[广告]: 代充Paypal帐号美元
好,好,试试



五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-7-27 10:04 AM#2
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
路过
注册会员
Rank: 2
初级会员



UID 66167
精华 0
积分 114
帖子 115
金钱 114 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-8-24
来自 湖南
状态 离线
[推荐阅读] 一个SESSION的老问题,问个真相?
路过,好孩子.
说清应用好了.
2006-7-28 03:43 AM#3
查看资料  访问主页  发短消息  ICQ 状态  Yahoo!  顶部
 
豆角
中级会员
Rank: 3Rank: 3
中级会员



UID 20917
精华 0
积分 387
帖子 420
金钱 387 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2003-6-19
来自 广西
状态 离线
[推荐阅读] 发布韩文文本编辑器
真的那么简单
2006-7-28 07:07 AM#4
查看资料  访问主页  发短消息  顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] JS烦死了,救救我吖
php对同一种功能的实现方法太多了,所以基本都列上了.



doc
2006-7-28 07:39 AM#5
查看资料  访问主页  发短消息  顶部
 
scf2
注册会员
Rank: 2
中级会员



UID 19294
精华 0
积分 195
帖子 210
金钱 195 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-4-1
来自 重庆人在深圳
状态 离线
[推荐阅读] 如何保持输入的公式格式
好东东.和我的思路差不多



傲客网,找你想要的......
http://oklrc.com
2006-9-21 09:44 PM#6
查看资料  访问主页  发短消息  QQ  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
☞风云山庄大少爷☜


UID 62639
精华 2
积分 14534
帖子 7520
金钱 14385 喜悦币
威望 20
人脉 129
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] 广招能人干士,学历何足挂齿
留一腿下次看.



 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流) 寧可在嘗試中失敗,也不在保守中成功! 不為失敗找理由,只為成功找方法! 饿踢Blog
 
2006-12-14 06:34 PM#7
查看资料  访问主页  Blog  发短消息  顶部
 
漠北怪叟
金牌会员
Rank: 6Rank: 6



UID 70640
精华 0
积分 2364
帖子 383
金钱 2364 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2006-3-29
状态 离线
[推荐阅读] 急! 有谁知道 http://www.hostgator.com 可不可靠?
最后一句:喜悦首发,严禁转帖
                          fcicq 2006.7.27

这句话不太好~~ 本身PHP就与开源与交流相辅相承~~~




我的博客:http://hjc73.space.mywallop.cn,换窝了,http://my.haokan123.com/?104 自己开发的博客自己撑~
2006-12-15 09:11 AM#8
查看资料  Blog  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024279 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP