打开网页为什么弹出下载对话框提示下载php文件
这种情况。
你既然可以把php关联到下载工具。
当然也可以删掉吧?
呵呵~
删掉就行~~
如果是直接在下载工具设置,不监视php,或关掉
监视下载地址的功能
还有一种超级简单的方法。。。
就是用雅虎助手之类的修复软件~
修复一下注册表关联~~
也可以手动到注册表里删除啊~~
开始、运行、regedit、然后在HKEY_CLASSES_ROOT里找php
function download($file_dir,$file_name)
//参数说明:
//file_dir:文件所在目录
//file_name:文件名
{
$file_dir = chop($file_dir);//去掉路径中多余的空格
//得出要下载的文件的路径
if($file_dir != '')
{
$file_path = $file_dir;
if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir)) != '/')
$file_path = '/';
$file_path = $file_name;
}
else
$file_path = $file_name;
//判断要下载的文件是否存在
if(!file_exists($file_path))
{
echo '对不起,你要下载的文件不存在。';
return false;
}
$file_size = filesize($file_path);
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: $file_size");
header("Content-Disposition: attachment; filename="$file_name);
$fp = fopen($file_path,"r");
$buffer_size = 1024;
$cur_pos = 0;
while(!feof($fp)&&$file_size-$cur_pos>$buffer_size)
{
$buffer = fread($fp,$buffer_size);
echo $buffer;
$cur_pos += $buffer_size;
}
$buffer = fread($fp,$file_size-$cur_pos);
echo $buffer;
fclose($fp);
return true;
}
你试一下吧,我再网上找的,没试过,看起来应该没问题
不过,你在代码最上面加上不限制时间不就行了吗,何必分段下载这么麻烦
文件的话 一般不可能直接下载的 PHP 一般都是搭建在LINUX里边
因为他设置了 权限 所以你无法直接下载 也就是基本不可能让你下载的
如果要是都想你想的这么简单 随便下载 那服务器岂不是很不安全了?
经过简单测试,下载大文件(>50M)时会出现,断节问题,还有对中文名字的文件支持不好,甚至返回404,下载的文件打不开也许是因为没有判断是否读取完,因为 fread不一定能一次性将一个文件读入内存,这样服务器有压力,服务器为了稳定可能对该内存区进行了优化,下面贴上我修改的代码,写的不好望指正,共同进步:
function download($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;
}
//echo fread($file_type,filesize($file_url));
fclose($file_type);
}
//最主要的原因找到了,保存PHP源码时要用UTF-8 无ROM格式编码保存,否则每个文件头部都会有 EF BB 这两个字节
0条评论