免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1384 | 回复: 3
打印 上一主题 下一主题

文件下载求助! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-29 13:59 |只看该作者 |倒序浏览
用PHP下载一个文件,因为不能暴露下载的实际目录,所以用fread的方法打开,然后发送给客户端。可执行文件包含一个数字签名,发现用这种方法发送的后的文件在保存到本机后末尾多了一个回车换行符,导致签名失效,无法在下载进度结束后直接运行!
发送代码:
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: {$size}");
header("Content-Disposition: attachment; filename="$name");

$fp = fopen($downpath, "rb");
fpassthru($fp);
fclose($fp);

换成:
$fp = fopen($downpath,"rb");
$buffer_size = 1024;
$cur_pos = 0;
   
while(!feof($fp)&&$size-$cur_pos>$buffer_size)
{
    $buffer = fread($fp,$buffer_size);
    print($buffer);
    $cur_pos += $buffer_size;
}
   
$buffer = fread($fp, $size-$cur_pos);
print($buffer);
fclose($fp);
效果一样。

但是用header("Location: $downpath");直接给出地址可以。
可公司要求不能这样给出地址,请教高手如何能去掉这个回车换行符!另外用上面的方式给出文件名时,会在里面加上一个“[1]”,不知道是何解?

论坛徽章:
0
2 [报告]
发表于 2006-09-29 16:30 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2006-09-29 17:09 |只看该作者
谢谢楼上的兄弟!

论坛徽章:
0
4 [报告]
发表于 2006-09-30 03:11 |只看该作者
原帖由 saccount 于 2006-9-29 16:30 发表
http://www.ugia.cn/?p=109

不错. 跟PEAR的HTTP_Download相似.
但是 PEAR的东西牵扯的东西太多. 这个却只有一个函数
简单多了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP