先将那个连接地址另存为,当变成.t***的后缀时才行,如果下下来是个.php文件,打开看下如果是乱码或者里面乱七八糟的,就直接改成种子文件后缀.t****,然后用迅雷打开
不要用迅雷,用Chrome自带的
chrome自带太慢啊,就没有别的办法吗
没有办法的,从技术角度来说,通过PHP输出的是文件流,迅雷是不可以下载的。
这个要利用javascript技巧才行,单独的PHP是无法实现的,经过我的测试,下面的代码可以实现同时下载多个文件:<script language=javascript>var urls=new Array('result.xls','201110x.rar','a.exe');for (i in urls) document.write('<a id="d'+i+'" href="'+urls[i]+'" target=_blank>x</a>');for (i in urls) document.getElementById('d'+i).click();</script>你PHP程序输出这样的代码就可以,主要是用for循环生成第二行urls数组的定义。
那这样就是循环产生新地址再每次弹出一个下载对话框?我想能不能在一个对话框中下载?
一个对话框中点了保存就下载多个文件呀,可能不现实吧,除非用户使用你修改过的专门浏览器。
提示下载说明没有配置PHP环境,所以localhost打开,无法解析语言,就认为是个普通的文件下载;配置本地环境,推荐使用PHPstudy一键配置,包含本地MySQL数据库,以及管理工具;此时由于你本地已经有了虚拟主机的环境,如果使用phpstudy,避免发生环境端口冲突,所以建议先卸载本地的已搭建好的虚拟机环境,然后再一键安装phpstudy。
php下载文件的流程: 我们向浏览器发送一个请求,访问服务器中的某个网页(如:download.php),服务器接受到该请求以后,运行该php文件 ,运行中就会把希望下载的文件(aa.rar)读入内存,但是如果文件较大,就要准备分成多段返回给客户端的(这样最可靠)。 需要在php代码中设置一次读取的字节数,比如在下面的代码中通过$buffer=1024设置一次读取的字节数,每读取一次,就输出数据(即返回给浏览器)如下:下载文件用的php文件,和放在同一个目录的下载文件aa.rardownload.php代码和解释<?php$file_name="aa.rar";//需要下载的文件$file_name=iconv("utf-8","gb2312","$file_name");$fp=fopen($file_name,"r+");//下载文件必须先要将文件打开,写入内存if(!file_exists($file_name)){//判断文件是否存在 echo "文件不存在"; //如果不存在 exit(); //直接退出} //如果存在,继续执行下载$file_size=filesize("aa.rar");//判断文件大小//返回的文件Header("Content-type: application/octet-stream");//按照字节格式返回Header("Accept-Ranges: bytes");//返回文件大小Header("Accept-Length: ".$file_size);//弹出客户端对话框,对应的文件名Header("Content-Disposition: attachment; filename=".$file_name);//防止服务器瞬时压力增大,分段读取$buffer=1024;while(!feof($fp)){ $file_data=fread($fp,$buffer); echo $file_data;}//关闭文件fclose($fp);?>
浏览器不支持php格式,请升级或换用其它浏览器PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
很明显你配置的php有问题,检查你的httpd.conf当中是否有以下几行LoadModule php5_module d:\php5\php5_apache2.dll 或LoadModule php5_module /usr/libexec/apache2/php5.so根据你的平台而定,实际路径也因环境而异AddType application/x-httpd-php .phpDirectoryIndex index.php
原因是少设置了一段文字。
具体分析如下:
apche 文件类型没有设置<FilesMatch "\.php$">SetHandler application/x-httpd-php</FilesMatch><FilesMatch "\.phps$">SetHandler application/x-httpd-php-source</FilesMatch>记得把PHP的也得加载进去。
把类型的加到 httpd.conf 中去。LoadModule php5_module c:/modules/php5apache2_2.dll 也要加到你的httpd.conf 中去,至于这个模块的路径就只有你自已才知道 了。然后重启你的apache。
在apache的配置文件httpd.conf中最后面加入以下几行.LoadModule php5_module modules/php5apache2_2.dllAddType application/x-httpd-php .phpAddType application/x-httpd-source .phps把php文件夹下的php5apache2_2.dll(注意你的apache版本对应的文件名。如果你的不是2.2版本,复制对应版本的dll.同时改上面的文件名)。复制到apache的安装目录的Apache2.2\modules\下面。
// 下载文件 文件用绝对路径 ob_clean(); header('Pragma: public'); header('Last-Modified:'.gmdate('D, d M Y H:i:s') . 'GMT'); header('Cache-Control:no-store, no-cache, must-revalidate'); header('Cache-Control:pre-check=0, post-check=0, max-age=0'); header('Content-Transfer-Encoding:binary'); header('Content-Encoding:none'); header('Content-type:multipart/form-data'); header('Content-Disposition:attachment; filename="'.$filename.'"'); //设置下载的默认文件名 header('Content-length:'. filesize($dfile)); //要下载的文件 $fp = fopen($dfile, 'r'); while(connection_status() == 0 && $buf = @fread($fp, 8192)){ echo $buf; } fclose($fp); @unlink($dfile); @flush(); @ob_flush(); exit();