php中强制下载文件的代码(解决了IE下中文文件名乱码问题)

php中强制下载文件的代码(解决了IE下中文文件名乱码问题),第1张

中间遇到一个问题是提交的中文文件名直接放到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'])

?>

两种方法:

1.直接做个超链接,地址为文件的地址

<a href="文件地址">下载</a>

2.流输出

<?php

$file=fopen('文件地址',"r")

header("Content-Type: application/octet-stream")

header("Accept-Ranges: bytes")

header("Accept-Length: ".filesize('文件地址'))

header("Content-Disposition: attachment filename=文件名称")

echo fread($file,filesize('文件地址'))

fclose($file)

?>

推荐第二种

因为第一种方法只能下载浏览器不能解析的文件,比如rar啊,脚本文件之类。如果文件是图片或者txt文档,就会直接在浏览器中打开。

而第二种方法是直接输出的文件流,不存在上述问题。

你可以检查一下你传值过来的路径是否正确,还有,流输出后面不要再进行任何 *** 作了。

拓展资料:

集成开发环境是一种集成了软件开发过程中所需主要工具的集成开发环境,其功能包括但不仅限于代码高亮、代码补全、调试、构建、版本控制等。一些常见的PHP IDEs如下:

Zend Studio:商业版,Zend官方出品,基于eclipse

Eclipse with PDT:免费

Coda:商业版,针对Mac用户

NetBeans:免费,功能强大

PHP Storm:商业版

Aptana Studio:免费

PhpEd:商业版

Komodo IDE/Edit:IDE为商业版,Edit可免费使用

Adobe Dreamweaver:商业版

除去集成开发环境,具备代码高亮功能的常见文本编辑器因其轻巧灵活也常被选作开发工具,例如:Notepad++、Editplus、SublimeText、Everedit(国人开发)等等。

PHP的特性包括:

1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。

2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,

PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;

PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。

3. PHP支持几乎所有流行的数据库以及 *** 作系统。

4. 最重要的是PHP可以用C、C++进行程序的扩展!

参考资料:百度百科:PHP

可能是那个论坛没有安装支持php格式的网页的服务器,也或者他的服务器出问题了。php是一种网页格式,就和普通的html一样,只是html更多的是静态的网页,也就是不能网站和用户之间的动态 *** 作,比如登录啊,留言啊什么。而Php是当下比较流行的一种动态网页格式。自己制作这个格式的网页的时候需要会Php脚本语言,还要安装apache服务器和php程序,还有一些配置。这些都具备了,并且服务器配置也成功了,你就可以把自己的php网页在浏览器显示出来了。如果你自己开发php网页,那么apache服务器会提供一个你制作的php网页的根目录,也就是你把你做的网页需要放到这个根目录中去,然后再把你做的网页的首页,也就是你让用户看到的第一个网页名字起成index.php,比如你的apache服务器提供的根目录名字叫htdocs,也就是有一个叫做htdocs的文件夹,你把你的index.php文件放到htdocs文件夹,然后再在服务器输入一个地址,通常是"localhost"把这个放到浏览器地址栏就可以看到你的网页了,如果你的文件放到htdocs文件夹中的a文件夹中你就要在浏览器中写localhost/a然后你的网页就出来了,也或者你可以写localhost/index.php或者localhost/a/index.php。服务器会把名字叫做index的网页当成默认的主页显示,所以,你不写index.php的时候,服务器也会自动找到这个文件。可是如果你的服务器没有配置好,那么就会出现逆看到的情况,浏览器就把php文件当成一个普通的文件下载下来。如果你又一定的html基础就会知道,最简单的下载方法就是在网页中直接写连接到要下载的文件。比如,你做一个html网页,要让他能够下载一个你提供的叫做voide.mp3的文件,并且你的这个文件放到了服务器根目录下也就是htdocs文件夹中,那么,因为你主页面也在这个文件夹下,和这个voide.mp3同级,所以你的html中的下载链接就可以写成“<a href="voide.mp3">下载链接</a>”这样你的页面就会有一个叫做“下载链接”的链接,然后用户点他的时候就会下载你的voide.mp3。如果你的voide.mp3放到根目录的a文件夹下,那么链接就写成“<a href="/a/voide.mp3">下载链接</a>”这个样子,效果和上面是一样的,因为服务器没有配置好或者是服务器出了问题,浏览器就把php文件当成了一个下载链接给下载了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11732618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存