好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php实现文件下载中文 php格式文件怎么下载

很多站长朋友们都不太清楚php实现文件下载中文,今天小编就来给大家整理php实现文件下载中文,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php实现文件下载代码 2、 怎样才能用PHP语言实现网页中的下载文件功能 3、 php中强制下载文件的代码(解决了IE下中文文件名乱码问题) 4、 关于PHP语言实现下载文件的问题 5、 有一段实现文件下载的php代码,之前使用下载成功,但现在无法使用了 6、 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语言实现网页中的下载文件功能

<?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中强制下载文件的代码(解决了IE下中文文件名乱码问题)

中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下。

复制代码

代码如下:

<?php

$file_name

=

urlencode($_REQUEST['filename']);

header("Pragma:

public");

header("Expires:

0");

header("Cache-Control:

must-revalidate,

post-check=0,

pre-check=0");

header("Content-Type:

application/force-download");

header('Content-Type:

application/vnd.ms-excel;

charset=utf-8');

header("Content-Transfer-Encoding:

binary");

header('Content-Disposition:

attachment;

filename='.$file_name);

echo

stripslashes($_REQUEST['content']);

?>

解决PHP

Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码就可以解决了。

解决方案一(我的页面是utf-8编码):

复制代码

代码如下:

$filename

=

"中文.txt";

$ua

=

$_SERVER["HTTP_USER_AGENT"];

$encoded_filename

=

urlencode($filename);

$encoded_filename

=

str_replace("+",

"%20",

$encoded_filename);

header('Content-Type:

application/octet-stream');

if

(preg_match("/MSIE/",

$ua))

{

header('Content-Disposition:

attachment;

filename="'

.

$encoded_filename

.

'"');

}

else

if

(preg_match("/Firefox/",

$ua))

{

header('Content-Disposition:

attachment;

filename*="utf8'''

.

$filename

.

'"');

}

else

{

header('Content-Disposition:

attachment;

filename="'

.

$filename

.

'"');

}

解决方法二

将文件名先urlencode一下再放入header,如下。

代码如下:

复制代码

代码如下:

<?php

$file_name

=

urlencode($_REQUEST['filename']);

header("Pragma:

public");

header("Expires:

0");

header("Cache-Control:

must-revalidate,

post-check=0,

pre-check=0");

header("Content-Type:

application/force-download");

header('Content-Type:

application/vnd.ms-excel;

charset=utf-8');

header("Content-Transfer-Encoding:

binary");

header('Content-Disposition:

attachment;

filename='.$file_name);

echo

stripslashes($_REQUEST['content']);

?>

关于PHP语言实现下载文件的问题

编写一个PHP文件,例如文件名为 download.php ,下载文件时直接下载该文件,传递一个要下载的文件ID,程序内获取文件在磁盘中的路径,然后读取写出给客户端就可以了。

关键代码:

$filepath = ''; //从数据库读出文件在硬盘中的路径

$filename = ''; //读取文件名称

header('Content-type: application/octet-stream'); //告诉浏览器,当前传递的数据是文件流,请做好接收

header('Content-Length: '.filesize($filepath)); //文件大小

header('Content-Disposition: inline; filename='.$filename); //文件名,浏览器下载时将对文件重命名,下载的文件名将不是 download.php

readfile($thumbFilePath); //将文件递给浏览器

比如有一文件的路径已记录在数据库,文件 id 为 123 ,下载地址将为: download.php?id=123

有一段实现文件下载的php代码,之前使用下载成功,但现在无法使用了

header("Content-Type:application/pdf");

注意这个的类型。。。文件不同参数不同

php文件下载,为什么文件名有中文的提示找不到文件??

如果网页编码是GB2312就不会出问题,因为系统中的文件名应该是GB2312编码的,否则就会文件找不到。因为不同编码的同一个汉字,其代码是不同的。

关于php实现文件下载中文的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php实现文件下载中文 php格式文件怎么下载的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did253991
更新时间:2023-09-13   阅读:18次

上一篇: php测试地址 php test

下一篇:php图片二进制流 php获取图片二进制文件流

相关资讯

最新资料更新

  • 1.php在线直播详解 php直播用的什么技术
  • 2.php数据库对象 php针对数据库的查询函数是
  • 3.phpjson提交 phppost提交
  • 4.phpvc6vc9的简单介绍
  • 5.修改php网页链接 怎么修改php网页
  • 6.imagephp缩放 缩放图像可以改变图像的分辨率吗
  • 7.免费版仓库管理系统php 仓库管理系统php源码
  • 8.php比较数组差集 php比较多个数组中是否有重复值
  • 9.php保存url数据 php获取url参数
  • 10.php可以回收吗 php还有人用吗
  • 11.扫描登录php代码 扫描登录php代码错误
  • 12.零基础php模板 php0基础教程
  • 13.php函数rand PHP函数的参数传递包括
  • 14.php数据抓取实例 php采集数据
  • 15.php和php-fpm的简单介绍
  • 16.php框架制作教程外包 怎么做php框架
  • 17.PHP没有前景吗 php现在怎么样
  • 18.php获取网页乱码 php网页显示乱码
  • 19.php显示json php显示客户端ip和服务器ip
  • 20.php获取数组坐标 php获取数组的值

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]