设置文件下载页面的代码时下载后的数据出现数据错误的错误原因和解决办法

其实,这不能算一个标准的错误,但是,这个错误让我弄了一下午也没有弄出来,问题是这样的:当我在php的页面设置下载的代码完成之后,总的看,代码并没有任何问题,但是,当我在实际下载的时候,单独把文件打开,则数据错误,在这个问题出现之后,我看了一下图片文件的代码和文件大小,发现比实际文件大了一些,对比代码,发现有些许不同,要说修改那就根本不能,所以,我就在代码里面继续找问题,这样找了一下午,也没有找到什么问题,这样就很纠结了,经过一下午的痛苦折磨,我顿时顿悟一个问题:我的字符编码是什么!对,是utf-8的编码,这个编码在一般的网页代码编写几乎是万能的,但是,文件(例如图片,视屏等)还是utf-8编码吗?于是,我把utf-8转化成ANSI的编码格式,再次进行测试。。。终于成功了,数据正确而且完整。

下面是我的测试过程的具体代码(注:没有上传02.jpg图片):

<?php
	$file_name = "02.jpg";
	if(!file_exists($file_name)){
		echo "没有此文件";
		return ;
	}
	$fp = fopen($file_name,"r");
	//文件大小
	$file_size = filesize($file_name);
	//定义相应头,说明是一个文件
	header("Content-type: application/octet-stream");
	//要以字节的方式返回
	header("Accept-Ranges: bytes");
	//限制文件的大小,就是该文件的实际大小,绝对的不多不少
	header("Accept-Length: $file_size");
	//定义在浏览器的下载时显示的文件名称
	header("Content-Disposition: attachment; filename=".$file_name);
	$buffer = 1024;
	$file_count = 0;
	while(!feof($fp) && ($file_size-$file_count>0)){
		$file_data = fread($fp,$buffer);
		$file_count+=$buffer;
		echo $file_data;
	}
	fclose($fp);
	
?>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值