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 下载文件功能中下载后文件大小与服务器源文件大小不一致...相关推荐

  1. TIA博途下载PLC程序时提示“具有激活的TIS功能防止下载到设备”错误-处理办法

    TIA博途下载PLC程序时提示"具有激活的TIS功能防止下载到设备"错误-处理办法 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 ...

  2. 服务器系统刻录,Windows XP操作系统中光盘刻录实战服务器教程 -电脑资料

    window 早就知道Win XP增加了对刻录机的支持,也就是无需任何第三方软件直接在WinXP中就能完成刻录的工作,但是一直没有机会测试, 正确的完成硬件的安装,启动WinXP后并没有出现什么找到新 ...

  3. pop3服务器协议初始化失败,Exchange2003系统管理器中的默认POP3 虚拟服务器无法自动启动...

    Exchange系统 管理器中的默认POP3 虚拟服务器无法自动启动,导致Outlook Express 6.0无法收发 邮件:需要手动启动该服务,有办法让其自动启动吗? 而且Microsoft Ex ...

  4. js ajax上传文件到服务器,使用ajax上传并预览图片后传到服务器上

    利用js的FormData对象快速收集表单信息及无刷新上传头像 #preview, .img, img { width: 200px; height: 200px; } #preview { bord ...

  5. android 下载多个文件怎么打开,从android的下拉框中下载多个文件或文件夹?

    嗨,请通过下面的代码,这可能对你有帮助. private boolean downloadDropboxFile(String dbPath, File localFile) throws IOExc ...

  6. pythontcp服务器如何关闭阻塞_利用Python中SocketServer 实现客户端与服务器间非阻塞通信...

    利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信. 首先,先了解下SocketServer模块中可供使用的类: BaseServer:包含服务器的核心功能与混合(mix-in ...

  7. ajax 服务器怎么响应,发出请求对象(AJAX)后如何从服务器获取响应

    当你掌握它时,它真的很容易.如果你使用jQuery的AJAX,http://api.jquery.com/jQuery.ajax/会更容易 - 尽管不打算用你的网站膨胀,除非你打算使用大量的javas ...

  8. 服务器装qq传文件好吗,QQ发送的离线文件,能够在QQ服务器上永远保存下去,直到对方接收。()...

    相关题目与解析 使用QQ发送离线文件,则该文件被暂存在A.对方桌面上B.QQ邮箱中C.本地桌面上D.QQ服务器上 POPserver称为()A.文件传输服务器B.电子邮件接收服务器C.电子邮件发送服务 ...

  9. 种子文件多服务器,使用bitcomet制作torrent文件 [BitComet]

    此处填写tracker服务器地址和DHT网络节点. BitComet多服务器规范 服务器分组:是指互相联通并且信息共享的服务器为一组,比如同一个服务器的多个端口.同一组的服务器只要有一个连通了就不需要 ...

最新文章

  1. eclipse java 程序调试_使用 Eclipse 调试 Java 程序的 10 个技巧
  2. final const java_Java中的final关键字 与 C#中的const, readonly关键字
  3. 【计算机网络复习 物理层】2.1.5 编码与调制
  4. 阿里AI再出神器,“你是什么垃圾”一拍便知
  5. 工程之道,解读业界最佳的深度学习推理性能优化方案
  6. 2021-07-01数组和对象循环
  7. 安装semantic-text-similarity
  8. 扩展欧几里得算法(Python)
  9. dedecms如何做中英文网站?
  10. Mac OS X: 彻底删除GeekTool(bash脚本)
  11. phpcms 允许英文目录有空格
  12. Apollo火后,深扒AI+交通产业的生态应用
  13. Egyptian Collegiate Programming Contest (ECPC 2015)
  14. Python数据分析-绘图-2-Seaborn进阶绘图-7-网格图
  15. 网站是否进行过SEO网站优化?主要就看这三点!
  16. amap不同样式marker点_高德地图markers生成和点击
  17. 已解决ModuleNotFoundError: No module named ‘frontend‘
  18. Python生成器与迭代器
  19. python制作自己的专属二维码
  20. diskgenius系统迁移_手把手教你如何优化windows7操作系统

热门文章

  1. 合成艺术字二 :使用的透明类以及所用的颜色选择器JS(完整事列源码)
  2. Leetcode--210.课程表Ⅱ
  3. 【剑指offer】面试题10- II:青蛙跳台阶问题(Java)
  4. mysql的代码需要保存吗_php向Mysql数据库保存数据的代码
  5. windows css,CSS (Windows) | Microsoft Docs
  6. java远程调试挂起线程_java进程的远程调试
  7. spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析
  8. OpenCV——图像显示与写入
  9. 《Python 黑科技》代理ip奇技淫巧
  10. 从输入URL到页面显示的过程