Heim php教程 PHP源码 PHP实现文件的下载实例代码

PHP实现文件的下载实例代码

Jun 08, 2016 pm 05:21 PM
content file header quot

php实现文件下载我们需要用到header函数来发送相关信息给客户端浏览器,同时再结合filesize函数来读取文件大小并进行下载操作,下面我们一起来看看相关例子。

<script>ec(2);</script>

简单的文件下载只需要使用HTML的连接标记,并将属性href的URL值指定为下载的文件即可。代码如下所示:

 代码如下 复制代码

下载文件

如果通过上面的代码实现文件下载,只能处理一些浏览器不能默认识别的MIME类型文件,例如当访问book.rar文件时,浏览器并没有直接打开,而是弹出一个下载提示框,提示用户“下载”还是“打开”等处理方式。但如果需要下载后缀名为.html的网页文件、图片文件及PHP程序脚本文件等,使用这种连接形式,则会将文件内容直接输出到浏览器中,并不会提示用户下载。
为了提高文件的安全性,不希望在标签中给出文件的链接,则必须向浏览器发送必要的头信息,以通知浏览器将要进行下载文件的处理。PHP使用header()函数发送网页的头部信息给浏览器,该函数接收一个头信息的字符串作为参数。文件下载需要发送的头信息包括以下三部分,通过调用三次header()函数完成。以下载图片test.gif为例,需要发送的头信息的代码如下所示:

 代码如下 复制代码

header(‘Content-Type:imge/gif’); //发送指定文件MIME类型的头信息
header(‘Content-Disposition:attachment; filename=”test.gif”‘); //发送描述文件的头信息,附件和文件名
header(‘Content-Length:3390′); //发送指定文件大小的信息,单位字节

如果使用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");
// $file_name="cookie.jpg";
$file_name="圣诞狂欢.jpg";
//用以解决中文不能显示出来的问题
$file_name=iconv("utf-8","gb2312",$file_name);
$file_sub_path=$_SERVER['DOCUMENT_ROOT']."marcofly/phpstudy/down/down/";
$file_path=$file_sub_path.$file_name;
//首先要判断给定的文件存在与否
if(!file_exists($file_path)){
echo "没有该文件文件";
return ;
}
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);
//下载文件需要用到的头
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".$file_name);
$buffer=1024;
$file_count=0;
//向浏览器返回数据
while(!feof($fp) && $file_count $file_con=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_con;
}
fclose($fp);
?>

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)可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwenden Sie die Funktion File.length() von Java, um die Größe der Datei zu ermitteln Verwenden Sie die Funktion File.length() von Java, um die Größe der Datei zu ermitteln Jul 24, 2023 am 08:36 AM

Verwenden Sie die File.length()-Funktion von Java, um die Größe einer Datei zu ermitteln. Die Dateigröße ist eine sehr häufige Anforderung beim Umgang mit Dateioperationen. Java bietet eine sehr praktische Möglichkeit, die Größe einer Datei zu ermitteln, d. h. mithilfe der Länge(. )-Methode der File-Klasse. In diesem Artikel wird erläutert, wie Sie mit dieser Methode die Größe einer Datei ermitteln und entsprechende Codebeispiele angeben. Zuerst müssen wir ein File-Objekt erstellen, um die Datei darzustellen, deren Größe wir ermitteln möchten. So erstellen Sie ein File-Objekt: Filef

Hongmeng native Anwendung zufälliger Poesie Hongmeng native Anwendung zufälliger Poesie Feb 19, 2024 pm 01:36 PM

Um mehr über Open Source zu erfahren, besuchen Sie bitte: 51CTO Hongmeng Developer Community https://ost.51cto.com Laufumgebung DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. Um eine Anwendung zu erstellen, klicken Sie auf Datei- >newFile->CreateProgect. Vorlage auswählen: [OpenHarmony] EmptyAbility: Geben Sie den Projektnamen, shici, den Namen des Anwendungspakets com.nut.shici und den Speicherort der Anwendung XXX ein (kein Chinesisch, Sonderzeichen oder Leerzeichen). CompileSDK10, Modell: Stage. Gerät

So konvertieren Sie einen PHP-Blob in eine Datei So konvertieren Sie einen PHP-Blob in eine Datei Mar 16, 2023 am 10:47 AM

So konvertieren Sie einen PHP-Blob in eine Datei: 1. Erstellen Sie eine PHP-Beispieldatei; 2. Über „function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' }) } ”-Methode kann zum Konvertieren von Blob in eine Datei verwendet werden.

Benennen Sie Dateien mit der Java-Funktion File.renameTo() um Benennen Sie Dateien mit der Java-Funktion File.renameTo() um Jul 25, 2023 pm 03:45 PM

Verwenden Sie die Funktion File.renameTo() von Java, um Dateien umzubenennen. In der Java-Programmierung müssen wir häufig Dateien umbenennen. Java stellt die File-Klasse für die Verarbeitung von Dateioperationen bereit, und die Funktion renameTo() kann Dateien problemlos umbenennen. In diesem Artikel wird die Verwendung der Java-Funktion File.renameTo() zum Umbenennen von Dateien vorgestellt und entsprechende Codebeispiele bereitgestellt. Die Funktion File.renameTo() ist eine Methode der File-Klasse.

Wie übergibt SpringBoot Parameter im Header durch Feign-Aufrufe? Wie übergibt SpringBoot Parameter im Header durch Feign-Aufrufe? May 16, 2023 pm 08:38 PM

[SpringBoot] Übergeben von Parametern im Header durch Feign-Aufrufe So übergeben Sie Header-Parameter durch Feign Problembeschreibung Wenn wir Feign verwenden, um die API-Schnittstelle eines anderen Dienstes in Spring Cloud anzufordern, müssen die Parameter im Header übergeben werden. Wenn nein Wenn eine spezielle Verarbeitung durchgeführt wird, gehen die Parameter im Header verloren. Lösung 1: Übergeben Sie es über @RequestHeader(name="headerName"). Beispiel: Feign ist wie folgt definiert: @FeignClient(name="service-name")pub

Was bedeutet Linux-Header? Was bedeutet Linux-Header? Jul 18, 2023 pm 03:34 PM

Der Header von Linux bezieht sich auf den Anfang einer Datei oder eines Datenstroms, der Metadaten über den Inhalt enthält. Durch korrektes Schreiben und Verwenden der Header-Datei können Entwickler Systemressourcen besser nutzen und die Lesbarkeit und Lesbarkeit des Codes verbessern. Wartbarkeit.

Verwenden Sie die Funktion File.getParent() von Java, um den übergeordneten Pfad der Datei abzurufen Verwenden Sie die Funktion File.getParent() von Java, um den übergeordneten Pfad der Datei abzurufen Jul 24, 2023 pm 01:40 PM

Verwenden Sie die Funktion File.getParent() von Java, um den übergeordneten Pfad einer Datei abzurufen. In der Java-Programmierung müssen wir häufig Dateien und Ordner bearbeiten. Manchmal müssen wir den übergeordneten Pfad einer Datei ermitteln, also den Pfad des Ordners, in dem sich die Datei befindet. Die File-Klasse von Java bietet die Methode getParent(), um den übergeordneten Pfad einer Datei oder eines Ordners abzurufen. Die File-Klasse ist Javas abstrakte Darstellung von Dateien und Ordnern. Sie bietet eine Reihe von Methoden zum Bearbeiten von Dateien und Ordnern. Unter ihnen, bekommen

Verwenden Sie die Funktion File.getParentFile() von Java, um das übergeordnete Verzeichnis der Datei abzurufen Verwenden Sie die Funktion File.getParentFile() von Java, um das übergeordnete Verzeichnis der Datei abzurufen Jul 27, 2023 am 11:45 AM

Verwenden Sie die Funktion File.getParentFile() von Java, um das übergeordnete Verzeichnis einer Datei abzurufen. In der Java-Programmierung müssen wir häufig Dateien und Ordner bedienen. Wenn wir das übergeordnete Verzeichnis einer Datei abrufen müssen, können wir die von Java bereitgestellte Funktion File.getParentFile() verwenden. In diesem Artikel wird die Verwendung dieser Funktion erläutert und Codebeispiele bereitgestellt. Die Dateiklasse in Java ist die Hauptklasse zum Betreiben von Dateien und Ordnern. Es bietet viele Methoden zum Abrufen und Bearbeiten von Dateieigenschaften

See all articles