php 点击按钮自动下载,IE下有问题,求解答!
直接看代码!
test.php
<?php include_once(‘index.php‘); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <a href="#" id="btn">点击下载</a> <script type="text/javascript"> var str = "data:image/png;base64,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"; function $urlEncode(str){//直接post,浏览器会把+号转了的,这里有坑 if(str && str.length){ return escape(str).replace(/\+/g, ‘%2B‘).replace(/\"/g,‘%22‘).replace(/\‘/g, ‘%27‘).replace(/\//g,‘%2F‘); } return ""; } document.getElementById(‘btn‘).onclick = function(){ document.getElementById(‘btn‘).setAttribute(‘href‘,‘test.php?file=‘+ $urlEncode(str)); } </script> </body> </html>
index.php
<?php $base64_url = urldecode($_GET[‘file‘]);//先解码 if($base64_url){ define(‘WWWROOT‘, dirname(__FILE__).‘\\‘); $base64_url = preg_replace(‘/\s/‘, ‘+‘, $base64_url);//空格变+号 $base64_body = substr(strstr($base64_url,‘,‘),1); $rand = rand(100, 999); $pics = date("YmdHis") . $rand . $type; //命名图片名称 $filename = ‘./‘.$pics.‘.jpg‘; $name = $pics.‘.jpg‘; $img = base64_decode($base64_body);//解码 $a = file_put_contents($filename, $img);//图片字节 $path = WWWROOT.$name;//完整的文件保存路径 $src = ‘http://127.0.0.1/download/‘.$name;//完整的图片url路径 header("Cache-Control: no-cache"); header("Pragma: no-cache"); header("Expires: 0"); header(‘Cache-Control: public, must-revalidate, max-age=0‘); header(‘Accept-Ranges: bytes‘); header("Content-Type: application/force-download"); header("Content-Type: application/download"); header("Content-Transfer-Encoding: binary"); header("Content-type: application/octet-stream"); header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0‘); //不加的话,IE中会提示目标主机无法访问 header(‘Pragma: public‘); //不加的话,IE中会提示目标主机无法访问 header("Content-Length: ".filesize($path)); header("Content-Disposition: attachment; filename=$name"); $fp = fopen($src, ‘rb‘); fpassthru($fp); fclose($fp); if(file_exists($path)){//然后把图片删除掉 unlink($path); exit; } } ?>
亲测,chrome 和 火狐都没问题。但是在IE下有bug,求大牛指点!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。