php下载文件与服务器有关吗,php 下载文件功能中下载后文件大小与服务器源文件大小不一致...
1.根據網上下載文件的函數
public function putFile($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))
{
// alert('對不起,你要下載的文件不存在');
return false;
}
$file_size = filesize($file_path);
header("Content-type: application/octet-stream;charset=gbk");
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;
}
確定是同一個文件但是出現下載后的文件 比源文件小這是為什么
回復內容:
1.根據網上下載文件的函數
public function putFile($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))
{
// alert('對不起,你要下載的文件不存在');
return false;
}
$file_size = filesize($file_path);
header("Content-type: application/octet-stream;charset=gbk");
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;
}
確定是同一個文件但是出現下載后的文件 比源文件小這是為什么
不同系統有差別是很正常的
寫的太復雜了,越復雜越容易錯,不確定是不是你那個長度管理有問題,以下代碼就足夠了。
$fp = fopen($file_path,"r");
$content = '';
while($_content = fread($fp, 1024)) $content.= $_content;
fclose($fp);
如果文件只有100字節,fread($fp, 1024)不會得到1024個字節的。
另外...我覺得,charset=gbk應該去掉,不需要指定編碼。
相關標簽:php
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的php下载文件与服务器有关吗,php 下载文件功能中下载后文件大小与服务器源文件大小不一致...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 64测试cpu稳定性_SuperPI-圆
- 下一篇: 动态规划算法php,php算法学习之动态