PHP下载文件损坏与打开乱码问题解决办法

最近更新一个项目,下载部分沿用了之前一个项目的下载代码,可是这次出现了一个小问题,下载的word等文件就提示乱码,下载rar等文件则直接提示文件已经损坏,找了许久也没最终确定原因。胡乱解决后莫名其妙的解决了问题,记录一下,原因待补充。

$extend = explode('.', $file_info->path);
         $ext = array_pop($extend);
         $file_name = $file_info->file_name .'.'.$ext;

            $file = fopen($file_info->path,"r");
            Header("Content-type: application/octet-stream");
            Header("Accept-Ranges: bytes");
            Header("Accept-Length: ".filesize($file_info->path));
            Header("Content-Disposition: attachment; filename=".$file_name);

            ob_clean(); ## 这里是新增的代码
        flush(); ## 这里是新增的代码
            echo fread($file, filesize($file_info->path));
            fclose($file);

注意:下载文件名如果为中文会乱码我们可以把它转成utf8或拼音即可解决

时间: 2024-09-27 07:11:26

PHP下载文件损坏与打开乱码问题解决办法的相关文章

下载文件个别浏览器文件名乱码解决办法_javascript技巧

复制代码 代码如下:     if (context.Request.UserAgent.ToLower().IndexOf("msie", System.StringComparison.Ordinal) > -1)//IE浏览器 {     context.Response.AddHeader("content-disposition", "filename=" + HttpUtility.UrlEncode(fileName)); }

Coreldraw文件损坏无法打开怎么办

问:Coreldraw文件损坏无法打开,怎么办? 答:以前做好的文件突然打不开了,或者是死机.非法操作等原因造成Coreldraw文件损坏,这可能是设计者最为头痛的老大难问题了. 情形一.操作过程当中碰到当机,先不要着急,保持当前的状态不变. Coreldraw里的缺省设置是10分钟自动备份一次,文件名以"文件名_自动备份"命名,找到这个文件,重命名即可. 如果你是新手,或者你的电脑不是很稳定的话,建议不要关掉Coreldraw的自动备份,这是有好处的. 另:最小化当前的Coreldr

跨浏览器PHP下载文件名中的中文乱码问题解决方法

 这篇文章主要介绍了跨浏览器PHP下载文件名中的中文乱码问题解决方法,涉及php针对中文编码的转码技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了跨浏览器PHP下载文件名中的中文乱码问题解决方法.分享给大家供大家参考.具体如下:   代码如下: <?php $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode(

跨浏览器PHP下载文件名中的中文乱码问题解决方法_php技巧

本文实例讲述了跨浏览器PHP下载文件名中的中文乱码问题解决方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20",

c语言-C语言用fdets读txt然后fputs写入html格式文件,浏览器打开乱码,用记事本看html源代码却显示正常,为什么?

问题描述 C语言用fdets读txt然后fputs写入html格式文件,浏览器打开乱码,用记事本看html源代码却显示正常,为什么? 解决方案 编码格式不统一,浏览器默认编码不一致. 解决方案二: 可能是UTF8格式的吧,那要转码的 解决方案三: 浏览器还涉及一个编码的问题,你的是不是写入编码为utf-8了?要添加meta制定charset为utf-8 <meta http-equiv="Content-Type" content="text/html; charset

Docker容器 日志中文乱码问题解决办法_docker

Docker容器 日志中文乱码问题解决办法 1. 找到dockerfile文件, 如 /use/local/src/Docker/Dockerfile 2. 编辑Dockerfile 添加 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 3. 生成新的镜像文件 docker build -t centos7 . 4. 使用docker images查看新生成的镜像 5. 使用新的镜像启动容器 docker run

smarty截取中文乱码问题解决办法

smarty截取中文乱码问题解决办法 本文章提供了三款smarty截取中文乱码问题解决办法,关于乱码主要是在中文汉字中的处理了,我们利用了uft-8,gb2312等字符内码机制来截取字符串. */ function smarty_modifier_utruncate($string, $length = 80, $etc = '...',                                     $break_words = false, $middle = false)   { 

PHP生成CSV文件用Excel打开乱码问题

百度查证后得知 PHP生成UTF-8编码的CSV文件用Excel打开中文显示乱码,是由于输出的CSV文件中没有BOM. 我们只要简单处理一下即可 那么如何在PHP中输出BOM呢? 在所有内容输出之前  代码如下 复制代码 print(chr(0xEF).chr(0xBB).chr(0xBF)); 例.php生成csv时我们可以这样  代码如下 复制代码 <?php $now = gmdate("D, d M Y H:i:s"); header("Expires: Tue

ASP利用adodb.stream下载文件但不打开的方法

 在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里.而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:  1.设置你的服务器的iis,给doc等后缀名做映射. 2.在向客户端发送时设置其contenttype. 下面详细说明方法2 程序代码: 复制代码 代码如下: <% Response.Buffer = true Response.Clear dim url Dim fso,fl,flsize dim Dn