由于采用前后端完全分离架构,后端采用laravel,前端采用react,交互通过axios库使用ajax进行,这样就导致无法get请求下载文件。
文件下载通常分为两类: * 一类是真是存在于服务器上面的文件 * 一类是后端动态生成的字节流文件
为了解决这两者的下载问题我自定义了助手方法来配合axios实现文件下载。
/**
* js 文件下载
*
* DownloadHelper.js
* import downloadHelper from './DownloadHelper';
*/
/**
* http文件下载
*
* use:
* downloadHelper.downloadUrl(response.data);
*
* @param url
*/
const downloadUrl = url => {
let iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = url;
iframe.onload = function () {
document.body.removeChild(iframe)
};
document.body.appendChild(iframe)
};
/**
* 获取字节流文件
*
* use:
* var blob = new Blob([response.data], {type: 'application/vnd.ms-excel'});
* var fileName = '文件名称.csv';
* downloadHelper.downFile(blob, fileName);
*
* @param blob
* @param fileName
*/
function downFile(blob, fileName) {
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
window.URL.revokeObjectURL(link.href);
}
}
export default {
downloadUrl: downloadUrl,
downFile: downFile
};
使用:
import axios from 'axios';
import downloadHelper from './DownloadHelper';
/*----------------------字节流文件下载-------------------------*/
/**
* 获得文件数据并下载
*/
axios.get('http://crm.dev/api/v1/clients/exportExcel', {
responseType: 'arraybuffer',
headers: {
'Accept': 'application/json',
'Authorization': AUTH_TOKEN
}
}).then(response => {
var blob = new Blob([response.data], {type: 'application/vnd.ms-excel'});
var fileName = '文件名称.csv';
downloadHelper.downFile(blob, fileName);
});
/*-----------------------普通文件下载-------------------------*/
/**
* 获取文件路径
*/
axios.get('http://crm.dev/api/v1/clients/excelTemplate', {
headers: {
'Accept': 'application/json',
'Authorization': AUTH_TOKEN
}
}).then(response => {
downloadHelper.downloadUrl(response.data);
});
以上就是“laravel 前后端分离文件下载”的详细内容,想要获取更多laravel教程欢迎关注编程学习网
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://phpxs.com/post/8263/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取