任意文件下载代码php,代码加文件名怎么下载

本文目录一览:

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实现文件下载代码

简单的文件下载只需要使用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实现文件下载代码~

echo “a href=’$file'”.$file.”/a”需要绝对路径,而且注意目录是不可以下载的。

?php

$root=”d:/”;

if(is_dir($root)){

$openHandle=opendir($root);

while(false!==($file=readdir($openHandle))){

if(!is_dir($root.$file))

echo “a href=’$root$file'”.$file.”/abr/”;

}

closedir($openHandle);

}

else {

echo “文件夹不存在”;

}

?

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-02 12:00
下一篇 2025-01-02 12:00

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

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

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

    编程 2025-04-29
  • Python基础代码用法介绍

    本文将从多个方面对Python基础代码进行解析和详细阐述,力求让读者深刻理解Python基础代码。通过本文的学习,相信大家对Python的学习和应用会更加轻松和高效。 一、变量和数…

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

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

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

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

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

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

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • Python将矩阵存为CSV文件

    CSV文件是一种通用的文件格式,在统计学和计算机科学中非常常见,一些数据分析工具如Microsoft Excel,Google Sheets等都支持读取CSV文件。Python内置…

    编程 2025-04-29

发表回复

登录后才能评论