PHP实现文件的下载实例代码
php实现文件下载我们需要用到header函数来发送相关信息给客户端浏览器,同时再结合filesize函数来读取文件大小并进行下载操作,下面我们一起来看看相关例子。
简单的文件下载只需要使用HTML的连接标记,并将属性href的URL值指定为下载的文件即可。代码如下所示:
代码如下 | 复制代码 |
如果通过上面的代码实现文件下载,只能处理一些浏览器不能默认识别的MIME类型文件,例如当访问book.rar文件时,浏览器并没有直接打开,而是弹出一个下载提示框,提示用户“下载”还是“打开”等处理方式。但如果需要下载后缀名为.html的网页文件、图片文件及PHP程序脚本文件等,使用这种连接形式,则会将文件内容直接输出到浏览器中,并不会提示用户下载。
为了提高文件的安全性,不希望在标签中给出文件的链接,则必须向浏览器发送必要的头信息,以通知浏览器将要进行下载文件的处理。PHP使用header()函数发送网页的头部信息给浏览器,该函数接收一个头信息的字符串作为参数。文件下载需要发送的头信息包括以下三部分,通过调用三次header()函数完成。以下载图片test.gif为例,需要发送的头信息的代码如下所示:
代码如下 | 复制代码 |
header(‘Content-Type:imge/gif’); //发送指定文件MIME类型的头信息 |
如果使用header()函数向浏览器发送了这三行头信息,图片test.gif就不会直接在浏览器中显示,而让浏览器将该文件形成下载的形式。在函数header()中,“Content-Type”指定了文件的MIME类型,“Content_Disposition”用于文件的描述,值“attachment; filename=”test.gif””说明这是一个附件,并且指定了下载后的文件名,“Content_Length”则给出了被下载文件的大小。
设置完头部信息以后,需要将文件的内容输出到浏览器,以便进行下载。可以使用PHP中的文件系统函数将文件内容读取出来后,直接输出给浏览器。最方便的是使用readfile()函数,将文件内容读取出来直接输出。下载文件test.gif的代码如下所示:
代码如下 | 复制代码 |
$filename = "test.gif"; header('Content-Type:image/gif'); //指定下载文件类型 header('Content-Disposition: attachment; filename="'.$filename.'"'); //指定下载文件的描述 header('Content-Length:'.filesize($filename)); //指定下载文件的大小 //将文件内容读取出来并直接输出,以便下载 readfile($filename); ?> |
上面如果碰到中文名字就会无法正常下载了,对于中文名字下载文件我又找到一个文件下载实例代码
代码如下 | 复制代码 |
header("Content-type:text/html;charset=utf-8"); |
header("Content-type:text/html;charset=utf-8")的作用:在服务器响应浏览器的请求时,告诉浏览器以编码格式为UTF-8的编码显示该内容
关于file_exists()函数不支持中文路径的问题:因为php函数比较早,不支持中文,所以如果被下载的文件名是中文的话,需要对其进行字符编码转换,否则file_exists()函数不能识别,可以使用iconv()函数进行编码转换
$file_sub_path() 我使用的是绝对路径,执行效率要比相对路径高
Header("Content-type: application/octet-stream")的作用:通过这句代码客户端浏览器就能知道服务端返回的文件形式
Header("Accept-Ranges: bytes")的作用:告诉客户端浏览器返回的文件大小是按照字节进行计算的
Header("Accept-Length:".$file_size)的作用:告诉浏览器返回的文件大小
Header("Content-Disposition: attachment; filename=".$file_name)的作用:告诉浏览器返回的文件的名称
以上四个Header()是必需的
fclose($fp)可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区

핫 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)

뜨거운 주제











오픈 소스에 대해 자세히 알아보려면 다음을 방문하세요. 51CTO Hongmeng 개발자 커뮤니티 https://ost.51cto.com 실행 환경 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. 애플리케이션을 생성하려면 파일을 클릭합니다. >새파일->CreateProgect. 템플릿 선택: [OpenHarmony]EmptyAbility: 프로젝트 이름 shici, 애플리케이션 패키지 이름 com.nut.shici 및 애플리케이션 저장 위치 XXX(한자, 특수 문자, 공백 없음)를 입력합니다. CompileSDK10, 모델: 스테이지. 장치

파일 크기를 얻으려면 Java의 File.length() 함수를 사용하십시오. 파일 크기는 파일 작업을 처리할 때 매우 일반적인 요구 사항입니다. Java는 파일 크기를 얻는 매우 편리한 방법, 즉 길이( ) File 클래스의 메서드입니다. 이 기사에서는 이 방법을 사용하여 파일 크기를 가져오는 방법을 소개하고 해당 코드 예제를 제공합니다. 먼저, 크기를 구하려는 파일을 나타내는 File 객체를 만들어야 합니다. File 객체를 생성하는 방법은 다음과 같습니다: Filef

PHP Blob을 파일로 변환하는 방법: 1. PHP 샘플 파일을 생성합니다. 2. "function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })를 통해 } ” 메소드를 사용하여 Blob을 파일로 변환할 수 있습니다.

Java의 File.renameTo() 함수를 사용하여 파일 이름을 바꿉니다. Java 프로그래밍에서는 파일 이름을 바꿔야 하는 경우가 많습니다. Java는 파일 작업을 처리하기 위해 File 클래스를 제공하며 renameTo() 함수는 파일 이름을 쉽게 바꿀 수 있습니다. 이 기사에서는 Java의 File.renameTo() 함수를 사용하여 파일 이름을 바꾸는 방법을 소개하고 해당 코드 예제를 제공합니다. File.renameTo() 함수는 File 클래스의 메서드입니다.

[SpringBoot] Feign 호출을 통해 헤더에 매개변수 전달 Feign을 통해 헤더 매개변수를 전달하는 방법 문제 설명 Feign을 사용하여 Spring Cloud에서 다른 서비스의 API 인터페이스를 요청할 때 헤더에 매개변수를 전달해야 합니다. 특수 처리가 완료되면 헤더의 매개변수가 손실됩니다. 해결 방법 1: @RequestHeader(name="headerName")을 통해 전달합니다. 예: Feign은 @FeignClient(name="service-name")pub와 같이 정의됩니다.

Linux 헤더는 콘텐츠에 대한 메타데이터를 포함하는 데 사용되는 파일 또는 데이터 스트림의 시작을 의미합니다. 헤더 파일을 올바르게 작성하고 사용함으로써 개발자는 시스템 리소스를 더 잘 활용하고 코드 가독성과 유지 관리성을 향상시킬 수 있습니다.

Java의 File.getParent() 함수를 사용하여 파일의 상위 경로를 가져옵니다. Java 프로그래밍에서는 파일과 폴더를 조작해야 하는 경우가 많습니다. 때로는 파일이 있는 폴더의 경로인 파일의 상위 경로를 가져와야 하는 경우가 있습니다. Java의 File 클래스는 파일이나 폴더의 상위 경로를 가져오는 getParent() 메서드를 제공합니다. File 클래스는 파일 및 폴더에 대한 Java의 추상 표현입니다. 이는 파일 및 폴더를 작동하기 위한 일련의 메소드를 제공합니다. 그 중, 얻으세요.

Java의 File.getParentFile() 함수를 사용하여 파일의 상위 디렉터리를 가져옵니다. Java 프로그래밍에서는 파일과 폴더를 조작해야 하는 경우가 많습니다. 파일의 상위 디렉토리를 가져와야 할 경우 Java에서 제공하는 File.getParentFile() 함수를 사용할 수 있습니다. 이 문서에서는 이 함수를 사용하는 방법을 설명하고 코드 예제를 제공합니다. Java의 파일 클래스는 파일과 폴더를 조작하는 데 사용되는 주요 클래스입니다. 파일 속성을 얻고 조작하는 다양한 방법을 제공합니다.
