PHP如何用header设置文件下载头!感谢~
发布网友
发布时间:2022-04-24 22:25
我来回答
共4个回答
懂视网
时间:2022-04-29 10:41
(1) 在下载大文件的时候,通常需要很长的时间,PHP有默认执行时间,一般是30s,超过该时间,就是下载失败,所以需要设置一下超时时间`set_time_limit(0);`
该语句说明函数执行不设置超时时间。另一个需要设置的就是内存使用,设置`ini_set('memory_limit', '128M');`
即可。
(2) 对于下载文件的文件名称,下载下来可能会出现乱码,当然,这种情况出现在文件名包含中文或者特殊字符的情况下,此时,可以设置一下header:
$contentDispositionField = 'Content-Disposition: attachment; '
. sprintf('filename="%s"; ', basename($file))
. sprintf("filename*=utf-8''%s", basename($file));
header($contentDispositionField);
(3)下载buffer大小,这个可以根据服务器带宽设置,一般4096就可以
(4)下载时,可以在echo buffer之后设置sleep(1)让程序休眠
(5)在设置header之前,ob_clean()一下,清除缓存区内容
1.强制下载本地文件
function forceDownload($file = '')
{
set_time_limit(0); //超时设置
ini_set('memory_limit', '128M'); //内存大小设置
ob_clean();
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/octet-stream");
header("Content-Type: application/download");
$contentDispositionField = 'Content-Disposition: attachment; '
. sprintf('filename="%s"; ', basename($file))
. sprintf("filename*=utf-8''%s", basename($file)); //处理文件名称
header($contentDispositionField);
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file));
$read_buffer = 4096; //设置buffer大小
$handle = fopen($file, 'rb');
//总的缓冲的字节数
$sum_buffer = 0;
//只要没到文件尾,就一直读取
while (!feof($handle) && $sum_buffer < filesize($file)) {
echo fread($handle, $read_buffer);
$sum_buffer += $read_buffer;
}
//关闭句柄
fclose($handle);
exit;
}
2.限制下载速率
/**
* @param $localFile 本地文件
* @param $saveFileName 另存文件名
* @param $downloadRate 下载速率
*/
function download_with_limitRate($localFile = '',$saveFileName = '',$downloadRate = 20.5)
{
if(file_exists($localFile) && is_file($localFile)) {
ob_clean();
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: '.filesize($localFile));
header('Content-Disposition: filename='.$saveFileName);
flush();
// 打开文件流
$file = fopen($localFile, "r");
while(!feof($file)) {
// 发送当前块到浏览器
print fread($file, round($downloadRate * 1024));
// 输出到浏览器
flush();
// sleep one second
sleep(1);
}
//关闭文件流
fclose($file);}
else {
die('Error: The file '.$localFile.' does not exist!');
}
}
3.下载网络文件
function downloadFromUrl($url = '', $savePath = 'uploads/')
{
set_time_limit(0);
ini_set('max_execution_time', '0');
$pi = pathinfo($url);
$ext = $pi['extension'];
$name = $pi['filename'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$opt = curl_exec($ch);
curl_close($ch);
$saveFile = $name . '.' . $ext;
if (preg_match("/[^0-9a-z._-]/i", $saveFile)) {
$saveFile = $savePath . '/' . md5(microtime(true)) . '.' . $ext;
} else {
$saveFile = $savePath . '/' . $name . '.' . $ext;
}
$handle = fopen($saveFile, 'wb');
if(fwrite($handle, $opt)){
echo 'download success';
}
fclose($handle);
exit;
}
4.获取网络文件大小
function remote_filesize($url, $user = "", $pw = "")
{
ob_start();
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
if (!empty($user) && !empty($pw)) {
$headers = array('Authorization: Basic ' . base64_encode("$user:$pw"));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = '/Content-Length:s([0-9].+?)s/';
preg_match($regex, $head, $matches);
return isset($matches[1]) ? $matches[1] : "unknown";
}
总结:
1.通过header方式下载一定不能通过ajax方式请求
2.设置超时时间
3.设置memory_limit
4.在header之前ob_clean()
5.设置buffer大小
6.可以设置sleep()减轻内存压力
热心网友
时间:2022-04-29 07:49
$filename = '文件路径';
//文件的类型
header('Content-type: application/pdf');
//下载显示的名字
header('Content-Disposition: attachment; filename="保存时的文件名.pdf"');
readfile("$filename");
exit;
附服务器响应HTTP的类型ContentType大全:
".*"="application/octet-stream"
".001"="application/x-001"
".301"="application/x-301"
".323"="text/h323"
".906"="application/x-906"
".907"="drawing/907"
".a11"="application/x-a11"
".acp"="audio/x-mei-aac"
".ai"="application/postscript"
".aif"="audio/aiff"
".aifc"="audio/aiff"
".aiff"="audio/aiff"
".anv"="application/x-anv"
".asa"="text/asa"
".asf"="video/x-ms-asf"
".asp"="text/asp"
".asx"="video/x-ms-asf"
".au"="audio/basic"
".avi"="video/avi"
".awf"="application/vnd.adobe.workflow"
".biz"="text/xml"
".bmp"="application/x-bmp"
".bot"="application/x-bot"
".c4t"="application/x-c4t"
".c90"="application/x-c90"
".cal"="application/x-cals"
".cat"="application/vnd.ms-pki.seccat"
".cdf"="application/x-netcdf"
".cdr"="application/x-cdr"
".cel"="application/x-cel"
".cer"="application/x-x509-ca-cert"
".cg4"="application/x-g4"
".cgm"="application/x-cgm"
".cit"="application/x-cit"
".class"="java/*"
".cml"="text/xml"
".cmp"="application/x-cmp"
".cmx"="application/x-cmx"
".cot"="application/x-cot"
".crl"="application/pkix-crl"
".crt"="application/x-x509-ca-cert"
".csi"="application/x-csi"
".css"="text/css"
".cut"="application/x-cut"
".dbf"="application/x-dbf"
".dbm"="application/x-dbm"
".dbx"="application/x-dbx"
".dcd"="text/xml"
".dcx"="application/x-dcx"
".der"="application/x-x509-ca-cert"
".dgn"="application/x-dgn"
".dib"="application/x-dib"
".dll"="application/x-msdownload"
".doc"="application/msword"
".dot"="application/msword"
".drw"="application/x-drw"
".dtd"="text/xml"
".dwf"="Model/vnd.dwf"
".dwf"="application/x-dwf"
".dwg"="application/x-dwg"
".dxb"="application/x-dxb"
".dxf"="application/x-dxf"
".edn"="application/vnd.adobe.edn"
".emf"="application/x-emf"
".eml"="message/rfc822"
".ent"="text/xml"
".epi"="application/x-epi"
".eps"="application/x-ps"
".eps"="application/postscript"
".etd"="application/x-ebx"
".exe"="application/x-msdownload"
".fax"="image/fax"
".fdf"="application/vnd.fdf"
".fif"="application/fractals"
".fo"="text/xml"
".frm"="application/x-frm"
".g4"="application/x-g4"
".gbr"="application/x-gbr"
".*"="application/x-*"
".gif"="image/gif"
".gl2"="application/x-gl2"
".gp4"="application/x-gp4"
".hgl"="application/x-hgl"
".hmr"="application/x-hmr"
".hpg"="application/x-hpgl"
".hpl"="application/x-hpl"
".hqx"="application/mac-binhex40"
".hrf"="application/x-hrf"
".hta"="application/hta"
".htc"="text/x-component"
".htm"="text/html"
".html"="text/html"
".htt"="text/webviewhtml"
".htx"="text/html"
".icb"="application/x-icb"
".ico"="image/x-icon"
".ico"="application/x-ico"
".iff"="application/x-iff"
".ig4"="application/x-g4"
".igs"="application/x-igs"
".iii"="application/x-iphone"
".img"="application/x-img"
".ins"="application/x-internet-signup"
".isp"="application/x-internet-signup"
".IVF"="video/x-ivf"
".java"="java/*"
".jfif"="image/jpeg"
".jpe"="image/jpeg"
".jpe"="application/x-jpe"
".jpeg"="image/jpeg"
".jpg"="image/jpeg"
".jpg"="application/x-jpg"
".js"="application/x-javascript"
".jsp"="text/html"
".la1"="audio/x-liquid-file"
".lar"="application/x-laplayer-reg"
".latex"="application/x-latex"
".lavs"="audio/x-liquid-secure"
".lbm"="application/x-lbm"
".lmsff"="audio/x-la-lms"
".ls"="application/x-javascript"
".ltr"="application/x-ltr"
".m1v"="video/x-mpeg"
".m2v"="video/x-mpeg"
".m3u"="audio/mpegurl"
".m4e"="video/mpeg4"
".mac"="application/x-mac"
".man"="application/x-troff-man"
".math"="text/xml"
".mdb"="application/msaccess"
".mdb"="application/x-mdb"
".mfp"="application/x-shockwave-flash"
".mht"="message/rfc822"
".mhtml"="message/rfc822"
".mi"="application/x-mi"
".mid"="audio/mid"
".midi"="audio/mid"
".mil"="application/x-mil"
".mml"="text/xml"
".mnd"="audio/x-musicnet-download"
".mns"="audio/x-musicnet-stream"
".mocha"="application/x-javascript"
".movie"="video/x-sgi-movie"
".mp1"="audio/mp1"
".mp2"="audio/mp2"
".mp2v"="video/mpeg"
".mp3"="audio/mp3"
".mp4"="video/mpeg4"
".mpa"="video/x-mpg"
".mpd"="application/vnd.ms-project"
".mpe"="video/x-mpeg"
".mpeg"="video/mpg"
".mpg"="video/mpg"
".mpga"="audio/rn-mpeg"
".mpp"="application/vnd.ms-project"
".mps"="video/x-mpeg"
".mpt"="application/vnd.ms-project"
".mpv"="video/mpg"
".mpv2"="video/mpeg"
".mpw"="application/vnd.ms-project"
".mpx"="application/vnd.ms-project"
".mtx"="text/xml"
".mxp"="application/x-mmxp"
".net"="image/pnetvue"
".nrf"="application/x-nrf"
".nws"="message/rfc822"
".odc"="text/x-ms-odc"
".out"="application/x-out"
".p10"="application/pkcs10"
".p12"="application/x-pkcs12"
".p7b"="application/x-pkcs7-certificates"
".p7c"="application/pkcs7-mime"
".p7m"="application/pkcs7-mime"
".p7r"="application/x-pkcs7-certreqresp"
".p7s"="application/pkcs7-signature"
".pc5"="application/x-pc5"
".pci"="application/x-pci"
".pcl"="application/x-pcl"
".pcx"="application/x-pcx"
".pdf"="application/pdf"
".pdf"="application/pdf"
".pdx"="application/vnd.adobe.pdx"
".pfx"="application/x-pkcs12"
".pgl"="application/x-pgl"
".pic"="application/x-pic"
".pko"="application/vnd.ms-pki.pko"
".pl"="application/x-perl"
".plg"="text/html"
".pls"="audio/scpls"
".plt"="application/x-plt"
".png"="image/png"
".png"="application/x-png"
".pot"="application/vnd.ms-powerpoint"
".ppa"="application/vnd.ms-powerpoint"
".ppm"="application/x-ppm"
".pps"="application/vnd.ms-powerpoint"
".ppt"="application/vnd.ms-powerpoint"
".ppt"="application/x-ppt"
".pr"="application/x-pr"
".prf"="application/pics-rules"
".prn"="application/x-prn"
".prt"="application/x-prt"
".ps"="application/x-ps"
".ps"="application/postscript"
".ptn"="application/x-ptn"
".pwz"="application/vnd.ms-powerpoint"
".r3t"="text/vnd.rn-realtext3d"
".ra"="audio/vnd.rn-realaudio"
".ram"="audio/x-pn-realaudio"
".ras"="application/x-ras"
".rat"="application/rat-file"
".rdf"="text/xml"
".rec"="application/vnd.rn-recording"
".red"="application/x-red"
".rgb"="application/x-rgb"
".rjs"="application/vnd.rn-realsystem-rjs"
".rjt"="application/vnd.rn-realsystem-rjt"
".rlc"="application/x-rlc"
".rle"="application/x-rle"
".rm"="application/vnd.rn-realmedia"
".rmf"="application/vnd.adobe.rmf"
".rmi"="audio/mid"
".rmj"="application/vnd.rn-realsystem-rmj"
".rmm"="audio/x-pn-realaudio"
".rmp"="application/vnd.rn-rn_music_package"
".rms"="application/vnd.rn-realmedia-secure"
".rmvb"="application/vnd.rn-realmedia-vbr"
".rmx"="application/vnd.rn-realsystem-rmx"
".rnx"="application/vnd.rn-realplayer"
".rp"="image/vnd.rn-realpix"
".rpm"="audio/x-pn-realaudio-plugin"
".rsml"="application/vnd.rn-rsml"
".rt"="text/vnd.rn-realtext"
".rtf"="application/msword"
".rtf"="application/x-rtf"
".rv"="video/vnd.rn-realvideo"
".sam"="application/x-sam"
".sat"="application/x-sat"
".sdp"="application/sdp"
".sdw"="application/x-sdw"
".sit"="application/x-stuffit"
".slb"="application/x-slb"
".sld"="application/x-sld"
".slk"="drawing/x-slk"
".smi"="application/smil"
".smil"="application/smil"
".smk"="application/x-smk"
".snd"="audio/basic"
".sol"="text/plain"
".sor"="text/plain"
".spc"="application/x-pkcs7-certificates"
".spl"="application/futuresplash"
".spp"="text/xml"
".ssm"="application/streamingmedia"
".sst"="application/vnd.ms-pki.certstore"
".stl"="application/vnd.ms-pki.stl"
".stm"="text/html"
".sty"="application/x-sty"
".svg"="text/xml"
".swf"="application/x-shockwave-flash"
".tdf"="application/x-tdf"
".tg4"="application/x-tg4"
".tga"="application/x-tga"
".tif"="image/tiff"
".tif"="application/x-tif"
".tiff"="image/tiff"
".tld"="text/xml"
".top"="drawing/x-top"
".torrent"="application/x-bittorrent"
".tsd"="text/xml"
".txt"="text/plain"
".uin"="application/x-icq"
".uls"="text/iuls"
".vcf"="text/x-vcard"
".vda"="application/x-vda"
".vdx"="application/vnd.visio"
".vml"="text/xml"
".vpg"="application/x-vpeg005"
".vsd"="application/vnd.visio"
".vsd"="application/x-vsd"
".vss"="application/vnd.visio"
".vst"="application/vnd.visio"
".vst"="application/x-vst"
".vsw"="application/vnd.visio"
".vsx"="application/vnd.visio"
".vtx"="application/vnd.visio"
".vxml"="text/xml"
".wav"="audio/wav"
".wax"="audio/x-ms-wax"
".wb1"="application/x-wb1"
".wb2"="application/x-wb2"
".wb3"="application/x-wb3"
".wbmp"="image/vnd.wap.wbmp"
".wiz"="application/msword"
".wk3"="application/x-wk3"
".wk4"="application/x-wk4"
".wkq"="application/x-wkq"
".wks"="application/x-wks"
".wm"="video/x-ms-wm"
".wma"="audio/x-ms-wma"
".wmd"="application/x-ms-wmd"
".wmf"="application/x-wmf"
".wml"="text/vnd.wap.wml"
".wmv"="video/x-ms-wmv"
".wmx"="video/x-ms-wmx"
".wmz"="application/x-ms-wmz"
".wp6"="application/x-wp6"
".wpd"="application/x-wpd"
".wpg"="application/x-wpg"
".wpl"="application/vnd.ms-wpl"
".wq1"="application/x-wq1"
".wr1"="application/x-wr1"
".wri"="application/x-wri"
".wrk"="application/x-wrk"
".ws"="application/x-ws"
".ws2"="application/x-ws"
".wsc"="text/scriptlet"
".wsdl"="text/xml"
".wvx"="video/x-ms-wvx"
".xdp"="application/vnd.adobe.xdp"
".xdr"="text/xml"
".xfd"="application/vnd.adobe.xfd"
".xfdf"="application/vnd.adobe.xfdf"
".xhtml"="text/html"
".xls"="application/vnd.ms-excel"
".xls"="application/x-xls"
".xlw"="application/x-xlw"
".xml"="text/xml"
".xpl"="audio/scpls"
".xq"="text/xml"
".xql"="text/xml"
".xquery"="text/xml"
".xsd"="text/xml"
".xsl"="text/xml"
".xslt"="text/xml"
".xwd"="application/x-xwd"
".x_b"="application/x-x_b"
".x_t"="application/x-x_t"
热心网友
时间:2022-04-29 09:07
$path = "http://*****/wlyz/1.txt";
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($path));
readfile($path);
这段代码可以新建一个PHP文件,放入以上代码,然后用一个<a>标签链接到这个php文件,带上参数,传入需要下载的文件的路径。
热心网友
时间:2022-04-29 10:42
$str = 'txt内容';
$filename = '文档名称';
header("Content-type: text/plain");
header("Accept-Ranges: bytes");
header("Content-Disposition: attachment; filename=".$filename);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header("Pragma: no-cache" );
header("Expires: 0" );
exit($str);
//这里改成
<a href="http://*****/wlyz/txt.php" target='_self'>下载到本地</a>
PHP如何用header设置文件下载头!感谢~
header("Content-Type: application/force-download");header("Content-Disposition: attachment; filename=".basename($path)); readfile($path); 这段代码可以新建一个PHP文件,放入以上代码,然后用一个<a>标签链接到这个php文件,带上参数,传入需要下载的文件的路径。 已赞过 已踩过< 你对这个回答的评价是? ...
用php header() 实现文件下载,出现问题
file=fopen('文件地址',"r");$size=filesize('文件地址');header("Content-Type: application/octet-stream");header("Accept-Ranges: bytes");header("Accept-Length: ".$size);header("Content-Disposition: attachment; filename=文件名称");echo fread($file, $size);fclose($file);...
php实现文件安全下载的代码怎么用
function download($fileName ){ Header("content-type:application/octet-stream");Header("content-disposition:attatchment;filename:".$fileName.".torrent");if(file_exists($fileAdd) && $file=fopen($fileAdd,"r"))//判断文件是否存在并打开 { fread($file,filesize($fileAdd));//读取文件...
php header 下载zip文件的问题
include("class.php");date_default_timezone_set("PRC");//设置时区为中国 filetype_array = array("as"=>"Flash ActionScript File","bmp"=>"BMP图像","doc"=>"Microsoft Word文档","rar"=>"WinRAR 压缩文档","ppt"=>"Microsoft PowerPoint 演示文稿","txt"=>"文本文档","xls"=>"Micr...
用php如何实现下载任意格式的文件
以下载PDF文件为例:<?php header('Content-type: application/pdf');//文件类型 header('Content-Disposition: attachment; filename="downloaded.pdf"');//默认保存的文件名 readfile('original.pdf');//实际的文件路径 ?> 其他文件类型的写法参考 http://apps.hi.baidu.com/share/detail/...
PHP中怎么用代码实现文件下载
前台: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->...
php如何实现中转下载文件
filename="a.rar"');readfile('http://a.com/a.rar');?>上面的例子只用了三个语句,完全就能实现你的基本功能。两个header语句告诉浏览器把接下来的数据保存为文件,readfile语句从互联网上获得文件内容到服务器,然后再发给浏览器。你需要使用url参数获得地址,这个代码不难,你应该是会的。
php实现文件下载代码
设置完头部信息以后,需要将文件的内容输出到浏览器,以便进行下载。可以使用PHP中的文件系统函数将文件内容读取出来后,直接输出给浏览器。最方便的是使用readfile()函数,将文件内容读取出来直接输出。下载文件test.gif的所示:<?php filename = "test.gif";header('Content-Type:image/gif'); //指定...
PHP 文件下载直接输出在浏览器页面上是怎么回事,求高手讲解
需要设置一下header,指明当前页面要传输一个数据流 Header("Content-type: application/octet-stream");再将要下载的文件附加到页面上:Header("Content-Disposition: attachment; filename=" . $file_name);然后用fread将文件输出
php中header()作用
header("Status: 404 Not Found");>?范例四:让使用者下载档案。header("Content-type: application/x-gzip");header("Content-Disposition: attachment; filename=文件名\");header("Content-Description: PHP3 Generated Data");?> header重定向 就等价于替用户在地址栏输入url --- //刚好找到比...