1.没有完整文件路径,后台抓取文件流
html:
<span onclick="download('download.php?fileId=1','test.doc')">下载文件</span>
前端js:
function download(url,name){
var oReq = new XMLHttpRequest();
//url参数为拿后台数据的接口
oReq.open("POST",url, true);
alert(oReq);
oReq.responseType = "blob";
oReq.onload = function (oEvent) {
var content = oReq.response;
var elink = document.createElement('a');
//name为后台返给前端的文件名
elink.download = name;
elink.style.display = 'none';
var blob = new Blob([content]);
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
};
oReq.send();
}
php:
public function download($fileID){
header("content-type:application/json");
$file = $this->getById($fileID);
$fileData = file_get_contents($file->realPath);//获取到文件流直接返回
die($fileData);
}
2.有完整文件路径,前端可抓取文件流
(1)js部分的url改为文件的完整路径即可
(2)或者直接使用a链接,href写上完整路径即可