很多站长朋友们都不太清楚php下载文件不完整,今天小编就来给大家整理php下载文件不完整,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 我给别人发的邮件是压缩格式的,为什么别人收到的是PHP格式的无效文件啊,下载下来也打不开!哪位朋友能告 2、 php 下载excel文件不能打开 3、 为什么我用php的curl获取到的数据不完整,无法获取列表全部数据 4、 为什么我做的php下载,每次下载后文件都打不开?下载下拉文件比原来多3个字节? 5、 PHP文件下载文件损坏的问题 6、 php下载文件问题 我给别人发的邮件是压缩格式的,为什么别人收到的是PHP格式的无效文件啊,下载下来也打不开!哪位朋友能告有好几种可能:
一、你的压缩文件在本地压缩就损坏,所以你发到对方的就是损坏或无效
(你自己解压那个文件试试)
二、压缩文件为上传完毕 对方收到的文件不是完整的
三、对方没有安装winrar程序,所以无法查看你发的文件
四、至于是PHP格式 可能是之前有人发过给他压缩文件他尝试用别的程序打开,而且把那个“始终使用选择的程序打开这种文件”的勾打上了
php 下载excel文件不能打开php下载excel文件,
1、在下载的过程中不要 输出任何非文件信息,比如 echo log信息。
否则下载后的文件无法打开,提示格式错误或者文件被破坏。
2、 输出的excel格式一定要和后缀名保存一直,否也会提示格式错误或者文件被破坏
代码如下:
if (file_exists(CACHE_PATH .
$file_name)){
//$this->logger->error('file
realpath:'.realpath(CACHE_PATH . $file_name));
header( 'Pragma: public'
);
header( 'Expires: 0' );
header( 'Content-Encoding: none'
);
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0'
);
header( 'Cache-Control: public' );
header( 'Content-Type:
application/vnd.ms-excel');
header( 'Content-Description: File
Transfer' );
header( 'Content-Disposition: attachment; filename=' .
$file_name );
header( 'Content-Transfer-Encoding: binary' );
header( 'Content-Length: ' . filesize ( CACHE_PATH . $file_name ) );
readfile ( CACHE_PATH . $file_name );
} else
{
$this->logger->error('export model :'.$id.' 错误:未生产文件');
echo '<script>alert(\'export error, file not
exists!\')</script>';
}
为什么我用php的curl获取到的数据不完整,无法获取列表全部数据你好,一般有俩原因:
①接口本身数据不完整;
②接口中数据量过大,可以调整一下服务器配置,PHP配置文件:memory_limit 每个PHP页面所吃掉的最大内存
为什么我做的php下载,每次下载后文件都打不开?下载下拉文件比原来多3个字节?你肯定是在想为什么韩顺平这样写没问题,而你照搬下来就有问题了。我也碰到过这个问题,其实原因是php的编码问题,韩顺平通常都会把php文件存成utf-8的编码,但是这个php文件他并没有这样做,你的默认编码肯定也是utf-8,你用记事本打开,然后把编码改成ANSI就可以了
PHP文件下载文件损坏的问题经过简单测试,下载大文件(>50M)时会出现,断节问题,还有对中文名字的文件支持不好,甚至返回404,下载的文件打不开也许是因为没有判断是否读取完,因为 fread不一定能一次性将一个文件读入内存,这样服务器有压力,服务器为了稳定可能对该内存区进行了优化,下面贴上我修改的代码,写的不好望指正,共同进步:
function download($file_url,$new_name=''){
$file_url=iconv('utf-8','gb2312',$file_url);
//将编码转为支持中英文的gb2312编码
if(!isset($file_url)||trim($file_url)==''){
return '500';
}
if(!file_exists($file_url)){ //检查文件是否存在
return '404';
}
$file_name=basename($file_url);
$file_type=explode('.',$file_url);
$file_type=$file_type[count($file_type)-1];
$file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;
//输入文件标签
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: ".filesize($file_url));
header("Content-Disposition: attachment; filename=".$file_name);
$file_type=fopen($file_url,'r'); //打开文件
//输出文件内容
$file_size=filesize($file_url);//获取文件大小
$buffer=1024; //定义1KB的缓存空间
$file_count=0; //计数器,计算发送了多少数据
while(!feof($file_type) ($file_size>$file_count)){
//如果文件还没读到结尾,且还有数据没有发送
$senddata=fread($file_type,$buffer);
//读取文件内容到缓存区
$file_count+=$senddata;
echo $senddata;
}
//echo fread($file_type,filesize($file_url));
fclose($file_type);
}
//最主要的原因找到了,保存PHP源码时要用UTF-8 无ROM格式编码保存,否则每个文件头部都会有 EF BB 这两个字节
php下载文件问题这个问题我也遇到过,只是我遇到的是文件头部多了三个字节,后来发现原来那三个字节是UTF-8的文件头,只要将文件的编码设置成UTF-8(无BOM)的就可以了。
你的问题是上下多了一个空白行,你要确定这个php文件的头部第一个字符开始就是 <?php ,最后两个字符是 ?>,否则没有包含在<?php?>之内的字符都会被输出的。
如图,在代码上下留行空白可能好看,但是在download用的php内就不合适了。
关于php下载文件不完整的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php下载文件不完整 php 下载文件的详细内容...