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

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

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

function download($file_dir,$file_name)

//参数说明:

//file_dir:文件所在目录

//file_name:文件名

{

$file_dir = chop($file_dir)//去掉路径中多余的空格

//得出要下载的文件的路径

if($file_dir != '')

{

$file_path = $file_dir

if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir)) != '/')

$file_path .= '/'

$file_path .= $file_name

}

else

$file_path = $file_name

//判断要下载的文件是否存在

if(!file_exists($file_path))

{

echo '对不起,你要下载的文件不存在。'

return false

}

$file_size = filesize($file_path)

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

header("Accept-Ranges: bytes")

header("Accept-Length: $file_size")

header("Content-Disposition: attachmentfilename=".$file_name)

$fp = fopen($file_path,"r")

$buffer_size = 1024

$cur_pos = 0

while(!feof($fp)&&$file_size-$cur_pos>$buffer_size)

{

$buffer = fread($fp,$buffer_size)

echo $buffer

$cur_pos += $buffer_size

}

$buffer = fread($fp,$file_size-$cur_pos)

echo $buffer

fclose($fp)

return true

}

你试一下吧,我再网上找的,没试过,看起来应该没问题

不过,你在代码最上面加上不限制时间不就行了吗,何必分段下载这么麻烦

phpcm

s  v9  现在是这样

的问题   

 点击一个下载文件的链接 

  先是跳转到一

个下载页面   

然后点击下载   我想把

中间这一步省了   

直接下载    查了网上有说   

 在phpcms  v9  后台的

模型管理  

 下载字段 更改 是

否直接下载 还是函数获

取地址

   我改了还

是不好用


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存