<?php
$file_name="hello.jpg";
if(!file_exists($file_name))
{
echo "文件不存在";
return;
}
$fp=fopen($file_name,"r");
//获取下载文件大小
$file_size=filesize($file_name);
echo $file_size;
//返回的文件
header("Content-type: application/octet-stream");
//按照字节大小返回
header("Accept-Ranges: byte");
//返回文件大小
header("Accept-Length: $file_size");
//这里客户端的弹出对话框,对应的文件名
header("Content-Disposition: attachment;filename=".$file_name);
$buffer=1024;
//判断文件是否到结尾,结束
while(!feof($fp))
{
//echo "1111";
$file_data=fread($fp,$buffer);
//把部分数据回送给浏览器
echo $file_data;
}
fclose($fp);
?>
打不开图片文件的提示是:因为此文件可能已经损坏,或者过大
$file_name="hello.jpg";
if(!file_exists($file_name))
{
echo "文件不存在";
return;
}
$fp=fopen($file_name,"r");
//获取下载文件大小
$file_size=filesize($file_name);
echo $file_size;
//返回的文件
header("Content-type: application/octet-stream");
//按照字节大小返回
header("Accept-Ranges: byte");
//返回文件大小
header("Accept-Length: $file_size");
//这里客户端的弹出对话框,对应的文件名
header("Content-Disposition: attachment;filename=".$file_name);
$buffer=1024;
//判断文件是否到结尾,结束
while(!feof($fp))
{
//echo "1111";
$file_data=fread($fp,$buffer);
//把部分数据回送给浏览器
echo $file_data;
}
fclose($fp);
?>
打不开图片文件的提示是:因为此文件可能已经损坏,或者过大
echo $file_size;//这句注释掉<?php
require_once ("_global.inc.php");$dlfile = get_dlfile_url($_SERVER['QUERY_STRING'], 'http://www.ydtuiguang.com/', 'download/');//检查文件路径限制下载其它目录文件
if(!exists_file($dlfile)){
message_box('1040');
}
$filename = get_file_name($dlfile);
$fileext = get_file_ext($dlfile);
if(in_array(strtolower($fileext), array("", "js", "php", "inc", "xml", "html", "htm"))){//检测文件类型防止下载代码文件
message_box('1040');
}
//调用下载
_private_download($dlfile, $filename.'.'.$fileext);
//以下是下PHP下载大文件函数
function _private_download($url, $filename){
// 获得文件大小, 防止超过2G的文件, 用sprintf来读
$filesize = sprintf("%u", filesize($url));
if (!$filesize)
{
return;
}
header("Content-type:application/octet-stream\n"); //application/octet-stream
header("Content-type:unknown/unknown;");
header("Content-disposition: attachment; filename=\"".$filename."\"");
header('Content-transfer-encoding: binary');
if ($range = getenv('HTTP_RANGE')) // 当有偏移量的时候,采用206的断点续传头
{
$range = explode('=', $range);
$range = $range[1];
header("HTTP/1.1 206 Partial Content");
header("Date: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s", filemtime($url))." GMT");
header("Accept-Ranges: bytes");
header("Content-Length:".($filesize - $range));
header("Content-Range: bytes ".$range.($filesize-1)."/".$filesize);
header("Connection: close"."\n\n");
}
else
{
header("Content-Length:".$filesize."\n\n");
$range = 0;
}
_private_loadFile($url);
}function _private_loadFile($filename, $retbytes = true) {
$buffer = '';
$cnt =0;
$handle = fopen($filename, 'rb');
if ($handle === false) {
return false;
}
while (!feof($handle)) {
$buffer = fread($handle, 1024*1024);
echo $buffer;
ob_flush();
flush();
if ($retbytes) {
$cnt += strlen($buffer);
}
}
$status = fclose($handle);
if ($retbytes && $status) {
return $cnt; // return num. bytes delivered like readfile() does.
}
return $status;
}
?>
$file_name="test.jpg";
if(!file_exists($file_name)){
echo "文件找不到";
exit;
}else{
$file = fopen($file_name,"r"); // 打开文件
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
echo fread($file,filesize($file_name));
fclose($file);
exit();
}