1. PHP下载文件程序中的疑问
你还不了解HTTP协议…浏览器请求一个下载.得到服务器响应是 头信息 + 内容实体.内容实体就是要下载的文件内容.. 所以当然需要用readfile()了…建议楼主去看看HTTP协议..(RFC2616).了解了一些HTTP知识,做网站才能知道为什么这样??
2. 关于PHP语言实现下载文件的问题
编写一个PHP文件,例如文件名为 download.php ,下载文件时直接下载该文件,传递一个要下载的文件ID,程序内获取文件在磁盘中的路径,然后读取写出给客户端就可以了。关键代码:$filepath = ''; //从数据库读出文件在硬盘中的路径$filename = ''; //读取文件名称header('Content-type: application/octet-stream'); //告诉浏览器,当前传递的数据是文件流,请做好接收header('Content-Length: '.filesize($filepath)); //文件大小header('Content-Disposition: inline; filename='.$filename); //文件名,浏览器下载时将对文件重命名,下载的文件名将不是 download.php readfile($thumbFilePath); //将文件递给浏览器 比如有一文件的路径已记录在数据库,文件 id 为 123 ,下载地址将为: download.php?id=123
3. iis7 环境下php配置后,下载文件变成了0字节
查看下php的错误日志一般在c:\windows\temp\php_error.log
4. BT下载时显示php压缩文件格式未知或数据已被破坏
php本来就不是种子文件,是网页文件
5. PHP文件下载文件损坏的问题
经过简单测试,下载大文件(>50M)时会出现,断节问题,还有对中文名字的文件支持不好,甚至返回404,下载的文件打不开也许是因为没有判断是否读取完,因为 fread不一定能一次性将一个文件读入内存,这样服务器有压力,服务器为了稳定可能对该内存区进行了优化,下面贴上我修改的代码,写的不好望指正,共同进步:
functiondownload($file_url,$new_name=''){$file_url=iconv('utf-8','gb2312',$file_url);//将编码转为支持中英文的gb2312编码if(!isset($file_url)||trim($file_url)==''){return'500';}if(!file_exists($file_url)){//检查文件是否存在return'404';}$file_name=basename($file_url);$file_type=explode('.',$file_url);$file_type=$file_type[count($file_type)-1];$file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;//输入文件标签header("Content-type:application/octet-stream");header("Accept-Ranges:bytes");header("Accept-Length:".filesize($file_url));header("Content-Disposition:attachment;filename=".$file_name);$file_type=fopen($file_url,'r');//打开文件//输出文件内容$file_size=filesize($file_url);//获取文件大小$buffer=1024;//定义1KB的缓存空间$file_count=0;//计数器,计算发送了多少数据while(!feof($file_type)&&($file_size>$file_count)){//如果文件还没读到结尾,且还有数据没有发送$senddata=fread($file_type,$buffer);//读取文件内容到缓存区$file_count+=$senddata;echo$senddata;}//echofread($file_type,filesize($file_url));fclose($file_type);}
//最主要的原因找到了,保存PHP源码时要用UTF-8 无ROM格式编码保存,否则每个文件头部都会有 EF BB 这两个字节
6. php文件上传,下载错误
再在资源文件里加上各种后缀吧 。ipg 。exe 。rar
7. 为什么运行php会下载文件解决方法
用讯雷下载文件到99%不动了怎么办?不知道大家使用IE下载时有没有遇到过这样的情况,当下载进度栏到99%时,就停止不动,任你等多长时间都没反应, 解决方法: 一、目标空间不足,请清理磁盘分区或另选择分区下载; 二、磁盘碎片过多,对目标盘进行一次碎片整理后重新下载; 方法:程序→附件→系统工具→磁盘碎片整理程序,三、第三方软件(如杀毒软件的实时监控、防火墙、3721上网助手等软件或插件)阻拦所致,关闭或卸载该类软件或插件后继续下载。 对于软件引起的问题,如搞不清究竟是哪个程序引起冲突的话,你可以尝试关闭所有应用软件,并打开任务管理器,将不用的非系统进程杀死,再上网试着下载: 四、清空IE临时文件夹以及Cookies后,重新下载, 五、系统是XP SP2的,可能与SP2的增强安全性设置有关。 解决方法:Internet选项→安全→自定义级别→在“下载”栏各选项中全部选择“启用”, 然后切换至“高级”选项卡,在“安全”栏中取消对“检查下载的程序的签名”复选框的选中,选中“允许运行或安装软件,即使签名无效”复选框,一些讯雷使用小技巧 1、如何更改文件名称在新建任务的时候可以修改文件名称,但是对于asp、php格式的链接很容易引起文件扩展名错误,所以建议大家在下载完成后修改文件名,例如我下载了一个歌曲东风破,文件名称为01.mp3,这时点工具栏的“移至”按钮,把文件改成“东风破.mp3”就好了,需要注意的是,在改文件名称的时候一定要保留原来文件的扩展名!2、如何更改已下载任务的注释信息注释信息可以帮助用户了解该文件的详细情况,通过下面的方法可以更改注释信息,右键点一个已经下载完成的任务,选择“属性”,在弹出的面板中修改注释就可以了。3、如何配置硬盘写入缓存迅雷使用了硬盘写入缓存,可以有效的减少硬盘读写次数,如何配置硬盘写入缓存呢?点“配置”――“常规配置”,“把数据写入磁盘每当接收到”后面的数字就是硬盘写入缓存的大小,注意单位是KB。4、如何使用速度限制功能迅雷默认是最大限度的使用带宽,如果在局域网中就会影响别人,这时就需要打开速度限制功能了,点“配置”――“连接配置”,点“将速度限制为”前面的勾,再输入你希望的速度就好了。5、如何关闭下载完成的提示音下载完成后迅雷会播放一个提示音,提示用户下载已经完成,如果不希望听到这个提示音,可以在“配置”――“常规配置”中取消提示音
8. PHP如何实现图片的下载,下面的图片路径可以直接打开,但是下载后打开就文件损毁或损坏。
9. php下载文件问题
这个问题我也遇到过,只是我遇到的是文件头部多了三个字节,后来发现原来那三个字节是UTF-8的文件头,只要将文件的编码设置成UTF-8(无BOM)的就可以了。
你的问题是上下多了一个空白行,你要确定这个php文件的头部第一个字符开始就是<?php,最后两个字符是?>,否则没有包含在<?php?>之内的字符都会被输出的。
如图,在代码上下留行空白可能好看,但是在download用的php内就不合适了。
10. 使用php下载大文件时,为什么下载15分钟20秒就停止了
网络断了吧,有可能这种情况发生