Heim > php教程 > php手册 > php header()函数实现文件下载的文件,提示被破坏不能打开

php header()函数实现文件下载的文件,提示被破坏不能打开

WBOY
Freigeben: 2016-05-26 08:21:41
Original
1005 Leute haben es durchsucht

最近一客户反映他们网站上所有的图片下载不了了,下载下来的图片都提示文件被破坏,直接导致打不开,作者测试了下发现确实有这个问题,仔细看了下源代码,发现问题的根源在fread这个函数,fread函数的第二个参数是设置读取最大的字节数.

经试验发现fread函数单次最大能够读取的字节数是有限制的,仅为8192个字节,即8KB,对于超过这个大小的文件,如果要完整读取,则需要循环读取直至文件结尾,综合以上做了些改正,以下代码是休整之后的代码,经测试问题解决.

PHP实例代码如下:

<?php
function download($file_url, $new_name = &#39;&#39;) {
    if (!isset($file_url) || trim($file_url) == &#39;&#39;) {
        return &#39;500&#39;;
    }
    if (!file_exists($file_url)) { //检查文件是否存在
        return &#39;404&#39;;
    }
    $file_name = basename($file_url);
    $file_type = explode(&#39;.&#39;, $file_url);
    $file_type = $file_type[count($file_type) - 1];
    $file_name = trim($new_name == &#39;&#39;) ? $file_name : urlencode($new_name) . &#39;.&#39; . $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);
    //输出文件内容
    @readfile($file_type);
}
Nach dem Login kopieren

               
               

本文地址:

转载随意,但请附上文章地址:-)

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage