php下载文件方法实例教程,php如何下载文件

本文目录一览:

PHP下载文件

可以直接在百度或者搜狗上面搜索

PHP下载文件

,点进去有个下载的按钮,只要电脑上面装了迅雷,点下载右键就会有迅雷下载了;

php实现文件下载代码

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

a href=”.*****.net/download/book.rar”下载文件/a

如果通过上面的代码实现文件下载,只能处理一些浏览器不能默认识别的MIME类型文件,例如当访问book.rar文件时,浏览器并没有直接打开,而是弹出一个下载提示框,提示用户“下载”还是“打开”等处理方式。但如果需要下载后缀名为.html的网页文件、图片文件及PHP程序脚本文件等,使用这种连接形式,则会将文件内容直接输出到浏览器中,并不会提示用户下载。

为了提高文件的安全性,不希望在a标签中给出文件的链接,则必须向浏览器发送必要的头信息,以通知浏览器将要进行下载文件的处理。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的所示:

?php

$filename = “test.gif”;

header(‘Content-Type:image/gif’); //指定下载文件类型

header(‘Content-Disposition: attachment; filename=”‘.$filename.'”‘); //指定下载文件的描述

header(‘Content-Length:’.filesize($filename)); //指定下载文件的大小

//将文件内容读取出来并直接输出,以便下载

readfile($filename);

?

上面如果碰到中文名字就会无法正常下载了,对于中文名字下载文件我又找到一个文件下载实例代码

?php

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_size){

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

PHP如何下载文件

            // 下载文件  文件用绝对路径

            ob_clean();

            header(‘Pragma: public’);

            header(‘Last-Modified:’.gmdate(‘D, d M Y H:i:s’) . ‘GMT’);

            header(‘Cache-Control:no-store, no-cache, must-revalidate’);

            header(‘Cache-Control:pre-check=0, post-check=0, max-age=0’);

            header(‘Content-Transfer-Encoding:binary’);

            header(‘Content-Encoding:none’);

            header(‘Content-type:multipart/form-data’);

            header(‘Content-Disposition:attachment; filename=”‘.$filename.'”‘); //设置下载的默认文件名

            header(‘Content-length:’. filesize($dfile));  //要下载的文件

            $fp = fopen($dfile, ‘r’);

            while(connection_status() == 0  $buf = @fread($fp, 8192)){

                echo $buf;

            }

            fclose($fp);

            @unlink($dfile);

            @flush();

            @ob_flush();

            exit();

怎样才能用PHP语言实现网页中的下载文件功能

?php

/*

    $file——文件名

    $_SERVER[‘DOCUMENT_ROOT’]—–服务器跟目标

    down——自定义下载文件的文件夹

    获取文件在文件夹里面的位置

    必须是绝对路径

    Content-Type: application/force-download  强制浏览器下载

*/

     $file=”xxxx.rar”;

        

        $file=$_SERVER[‘DOCUMENT_ROOT’].”/down/”.$file ;

        

       

        if(is_file($file)) {

            header(“Content-Type: application/force-download”);

            header(“Content-type: application/octet-stream”);

            header(“Content-Disposition: attachment; filename=”.basename($file));

            readfile($file);

            exit;

        }else{

            echo “文件不存在!”;

            exit;

        }        

?

PHP中怎么用代码实现文件下载

CI框架:

前台:a.php a href=”download/export”download/a

后台:download.php

function export(){

//把js,css的路径文件名填充下面的$url和$fname就可以了

//至于html文件,先在后台生成一个html文件,然后下载就可以了

$fname=date(‘YmdHis’).’.xls’;

$url=’./xls/’.$fname;

$this-excel_m-write($url);

$file = fopen($url,”r”); // 打开文件

// 输入文件标签

header(‘Content-Encoding: utf-8’);

header(“Content-type: application/octet-stream”);

header(“Accept-Ranges: bytes”);

header(“Accept-Length: “.filesize($url));

header(‘Content-Transfer-Encoding: binary’ );

header(“Content-Disposition: attachment; filename=” .$fname); //以真实文件名提供给浏览器下载

header(‘Pragma: no-cache’);

header(‘Expires: 0’);

//输出文件内容

echo fread($file,filesize($url));

fclose($file);

}

如何实现php点击时下载txt文件功能? 详细

php 点击下载txt 文件由于现在的浏览器已经可以识别格式为txt 的文档格式,所以如果只是给txt 文档做一个文字链接的话,可能只是打开一个新窗口显示txt 文件的内容,并不能实现点击下载的目的。We have to do something else.当然这个问题的解决办法也可以是你将你的txt 文件改名为浏览器不认识的文件,比如rar,这样的话点击,浏览器不认识就只好让用户下载了。下面这个文件就是通过设置header 设置文档的格式来实现点击下载的目的,将上个页面传递过来的文件点击可以下载。接着第二个header函数设置了要下载的文件,注意这里filename是不包含路径的文件名,所以用basename 过滤掉路径名。这个 filename 的值将来就是点击下载后弹出对话框里面的文件名,如果带路径的话,弹出对话框的文件名就是未知的,这个要注意,我就犯了这个错误,后来凭 经验自己改了,居然对了。最后就是 readfile,将文件流输出到浏览器,这样就实现了 txt 文件的下载,其他类型的类似。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/219680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-09 11:00
下一篇 2024-12-09 11:00

相关推荐

  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • 为什么用cmd运行Java时需要在文件内打开cmd为中心

    在Java开发中,我们经常会使用cmd在命令行窗口运行程序。然而,有时候我们会发现,在运行Java程序时,需要在文件内打开cmd为中心,这让很多开发者感到疑惑,那么,为什么会出现这…

    编程 2025-04-29
  • 用不同的方法求素数

    素数是指只能被1和自身整除的正整数,如2、3、5、7、11、13等。素数在密码学、计算机科学、数学、物理等领域都有着广泛的应用。本文将介绍几种常见的求素数的方法,包括暴力枚举法、埃…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29

发表回复

登录后才能评论