php用header()实现文件下载,下载的文件提示被破坏不能打开的解决办法_PHP教程
本站以前分享过一个文件下载的函数,具体文章连接地址如下:
PHP文件下载函数(代码)
最近一客户反映他们网站上所有的图片下载不了了,下载下来的图片都提示文件被破坏,直接导致打不开,作者测试了下发现确实有这个问题,仔细看了下源代码,发现问题的根源在fread这个函数,fread函数的第二个参数是设置读取最大的字节数,经试验发现fread函数单次最大能够读取的字节数是有限制的,仅为8192个字节,即8KB,对于超过这个大小的文件,如果要完整读取,则需要循环读取直至文件结尾。综合以上做了些改正,以下代码是休整之后的代码,经测试问题解决。
function download($file_url,$new_name=''){ 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; //输入文件标签phpernote 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); }
您可能感兴趣的文章
- 利用SecureCRT上传、下载文件(使用sz与rz命令)
- hosts文件位置以及如何打开hosts文件
- PHP分析文件头信息判断上传文件的类型
- php清空(删除)指定目录下的文件,不删除目录文件夹的方法
- PHP 利用 Curl Functions 实现多线程抓取网页和下载文件
- PHP文件下载函数(代码)
- php限制文件下载速度的功能
- 鼠标移动到文字上出现浮层提示特效(兼容IE,火狐等所有浏览器)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.
