php中怎么实现文件下载功能?

php中怎么实现文件下载功能?,第1张

两种方法:

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

header('Content-type: application/save-as')

header('Content-Disposition: attachment filename="a.rar"')

readfile('http://a.com/a.rar')

?>

上面的例子只用了三个语句,完全就能实现你的基本功能。两个header语句告诉浏览器把接下来的数据保存为文件,readfile语句从互联网上获得文件内容到服务器,然后再发给浏览器。

你需要使用url参数获得地址,这个代码不难,你应该是会的。

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

?>


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

原文地址: https://outofmemory.cn/tougao/11639809.html

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

发表评论

登录后才能评论

评论列表(0条)

保存