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 下载文件功能中下载后文件大小与服务器源文件大小不一致...相关推荐
- TIA博途下载PLC程序时提示“具有激活的TIS功能防止下载到设备”错误-处理办法
TIA博途下载PLC程序时提示"具有激活的TIS功能防止下载到设备"错误-处理办法 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 ...
- 服务器系统刻录,Windows XP操作系统中光盘刻录实战服务器教程 -电脑资料
window 早就知道Win XP增加了对刻录机的支持,也就是无需任何第三方软件直接在WinXP中就能完成刻录的工作,但是一直没有机会测试, 正确的完成硬件的安装,启动WinXP后并没有出现什么找到新 ...
- pop3服务器协议初始化失败,Exchange2003系统管理器中的默认POP3 虚拟服务器无法自动启动...
Exchange系统 管理器中的默认POP3 虚拟服务器无法自动启动,导致Outlook Express 6.0无法收发 邮件:需要手动启动该服务,有办法让其自动启动吗? 而且Microsoft Ex ...
- js ajax上传文件到服务器,使用ajax上传并预览图片后传到服务器上
利用js的FormData对象快速收集表单信息及无刷新上传头像 #preview, .img, img { width: 200px; height: 200px; } #preview { bord ...
- android 下载多个文件怎么打开,从android的下拉框中下载多个文件或文件夹?
嗨,请通过下面的代码,这可能对你有帮助. private boolean downloadDropboxFile(String dbPath, File localFile) throws IOExc ...
- pythontcp服务器如何关闭阻塞_利用Python中SocketServer 实现客户端与服务器间非阻塞通信...
利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信. 首先,先了解下SocketServer模块中可供使用的类: BaseServer:包含服务器的核心功能与混合(mix-in ...
- ajax 服务器怎么响应,发出请求对象(AJAX)后如何从服务器获取响应
当你掌握它时,它真的很容易.如果你使用jQuery的AJAX,http://api.jquery.com/jQuery.ajax/会更容易 - 尽管不打算用你的网站膨胀,除非你打算使用大量的javas ...
- 服务器装qq传文件好吗,QQ发送的离线文件,能够在QQ服务器上永远保存下去,直到对方接收。()...
相关题目与解析 使用QQ发送离线文件,则该文件被暂存在A.对方桌面上B.QQ邮箱中C.本地桌面上D.QQ服务器上 POPserver称为()A.文件传输服务器B.电子邮件接收服务器C.电子邮件发送服务 ...
- 种子文件多服务器,使用bitcomet制作torrent文件 [BitComet]
此处填写tracker服务器地址和DHT网络节点. BitComet多服务器规范 服务器分组:是指互相联通并且信息共享的服务器为一组,比如同一个服务器的多个端口.同一组的服务器只要有一个连通了就不需要 ...
最新文章
- eclipse java 程序调试_使用 Eclipse 调试 Java 程序的 10 个技巧
- final const java_Java中的final关键字 与 C#中的const, readonly关键字
- 【计算机网络复习 物理层】2.1.5 编码与调制
- 阿里AI再出神器,“你是什么垃圾”一拍便知
- 工程之道,解读业界最佳的深度学习推理性能优化方案
- 2021-07-01数组和对象循环
- 安装semantic-text-similarity
- 扩展欧几里得算法(Python)
- dedecms如何做中英文网站?
- Mac OS X: 彻底删除GeekTool(bash脚本)
- phpcms 允许英文目录有空格
- Apollo火后,深扒AI+交通产业的生态应用
- Egyptian Collegiate Programming Contest (ECPC 2015)
- Python数据分析-绘图-2-Seaborn进阶绘图-7-网格图
- 网站是否进行过SEO网站优化?主要就看这三点!
- amap不同样式marker点_高德地图markers生成和点击
- 已解决ModuleNotFoundError: No module named ‘frontend‘
- Python生成器与迭代器
- python制作自己的专属二维码
- diskgenius系统迁移_手把手教你如何优化windows7操作系统
热门文章
- 合成艺术字二 :使用的透明类以及所用的颜色选择器JS(完整事列源码)
- Leetcode--210.课程表Ⅱ
- 【剑指offer】面试题10- II:青蛙跳台阶问题(Java)
- mysql的代码需要保存吗_php向Mysql数据库保存数据的代码
- windows css,CSS (Windows) | Microsoft Docs
- java远程调试挂起线程_java进程的远程调试
- spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析
- OpenCV——图像显示与写入
- 《Python 黑科技》代理ip奇技淫巧
- 从输入URL到页面显示的过程