fread认为\01是文件结束符号。
用readfile吧,直接就输出了,也不用open了。或者file_get_contentsheader嘛找找rfc看看http部分就明白了
用readfile吧,直接就输出了,也不用open了。或者file_get_contentsheader嘛找找rfc看看http部分就明白了
解决方案 »
- 考试页面限制
- PHP MYSQL 字符编码问题
- 疯子问题:后台信息审核状态设置问题 (三个状态)
- 怎么实现PHP复制文件!
- 正则表达式中的 [^abc] 表示字符里不匹配a,b,c三个字符,那我要abc三个同时不匹配应该怎么办
- php高手,请加群14471754 ..散分 100分
- 请问有什么办法可以知道一个数组里有什么数据,或者把数组里的数据全部打印出来?
- 求用DREAMWEAVER实现PHP分页显示
- 公司可能要做个用 PHP的项目,我是做win32和.net开发的,现在要开始转了,有些问题,要咨询各位专业人事,请不要开玩笑,在此谢谢了!
- 想学习php,mysql请大家推荐几本书!我有asp的编程基础。谢谢!
- session验证问题 急 !!!
- 一个关于文件的问题。
Header("Pragma: public");
Header("Expires: 0");
Header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
读出的文件名称和路径都是错误的我英文基础差...
那个rfc我至少得看半年......
种情况下,用一个超链接打开新窗口或者原窗口下载都没有问题.但是当我用脚本自动打开新窗口下载的时候却不能够正常读出文件存放的路径名称,脚本如下:
echo "<script lanuage=javascript>
echo "window.open('./download.php?filename=$filename','_blank','');";
echo "</script>";
我的文件名称是一个时间值,如 2004-11-25_16:01:01.txt
弹出的保存操作对话框中,我发现文件名这一项只读取到文件名的最后两位'01',连扩展名都没有,导致文件无法下载.
但是加入了以下三句后就一切都正常了:
Header("Pragma: public");
Header("Expires: 0");
Header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
---------------------------------
事实上你只要将这句
$fp=fopen($file_path.$file_name,"r");
改为
$fp=fopen($file_path.$_GET[file_name],"r");
就好了,不用像上面那样加三行,其中第一行应该是设置可以读取全局变量的下面这些头,有点像HTTP或是FTP下载头的,不知道我解释的对不对,如果不对,还请下面的高手指正
Header("Content-type: text/plain");//这个是内容类型证明是文本型的
Header("Accept-Ranges: bytes");//这个是告诉浏览器从什么地方开始传输,这里是从开始,如果设置了数值的话,比如100 那么浏览器就认为是从100开始传送的,主要是用于断点续传。
Header("Accept-Length: ".filesize($file_path.$file_name));//告诉浏览器文件大小是多少,主要用于浏览器来计算剩余下载时间或是预先分配存储空间等
Header("Content-Disposition: attachment; filename=".$file_name);//这行就不太明白了。。
请楼主核实我所说的
请后来的高手指正错误。
===============
这行是表明文件以附件形式下载,也就是出现下载提示框
这里是filename
而你获取的时候是file_name
是这里的笔误还是?你获取到的应该是前面付过值的,而不是浏览器传过来的吧。
其实我的$file_name就是通过$_GET[file_name]获取的,没有那三句还是无法正确读取文件路径和名称.
另外对于Header("Pragma: public");我觉得不是说明全局变量的,我倒是觉得是说明Cache的类型的.
不过为问什么设置了Cache后就能够正确读出文件路径和名称呢?不解to surfchen(冲浪)
请问,您是怎样解释那三句话的作用的?to polygame(polygame)
那个的确是笔误,谢谢纠正.$file_name是我根据时间规则构造好的文件名称,当我刷新文件下载界面的时候赋值给自动弹出窗口的脚本,然后通过弹出窗口调用下载过程
不过文件名2004-11-25_16:01:01.txt不正确
不能包含冒号
下载后会变成2004-11-25_16 01 01.txt
thank,这个我注意到了,我已经换成2004-11-25_16-01-01.txt这种格式了,问题还是如上