提交 b7a21c62 authored 作者: 钟是志's avatar 钟是志

导出文件接口需要加密 /DataObjApi/exportCurrent

上级 15360bbc
......@@ -21,6 +21,9 @@ const encryptApiList = [
{
api: 'DataObjApi/addFormData',
},
{
api: 'DataObjApi/exportCurr',
},
{
api: 'DataColumnApi/add',
},
......
import urlTransform from '@/webPublic/zyd_public/request/urlTransform';
import FormdataWrapper from '@/webPublic/zyd_public/utils/object-to-formdata-custom';
import { notification } from 'antd';
import { getHeaders, getIsBei_Dian } from '@/webPublic/zyd_public/utils/utils';
import { proxyChangeUrl } from '@/webPublic/zyd_public/request/proxyChangeUrl';
import { getHeaders } from '@/webPublic/zyd_public/utils/utils';
/**
* 本地开发可能会存在跨域问题
......@@ -10,55 +10,61 @@ import { proxyChangeUrl } from '@/webPublic/zyd_public/request/proxyChangeUrl';
* 2022年7月8日
* 如果ext 传空字符串 则从response.headers 中获取文件名
* */
export function downloadFile(url, params, fileName = '导出文件', ext = 'xlsx', method = 'POST') {
url = proxyChangeUrl(url);
url = urlTransform(url);
export function downloadFile(
url,
params,
fileName = '导出文件',
ext = 'xlsx',
method = 'POST',
) {
url = urlTransform(url);
let responseHeadersFileName = '';
let responseHeadersFileName = '';
fetch(url, {
method,
body: method === 'GET' ? undefined : FormdataWrapper(params),
...getHeaders(),
})
.then((res) => {
if (res.status + '' !== '200') {
return res.json();
} else {
const contentDisposition = res.headers.get('content-disposition');
let fileNameEncode = contentDisposition && contentDisposition.split('filename=');
if (fileNameEncode.length > 1) {
fileNameEncode = fileNameEncode[1];
responseHeadersFileName = decodeURIComponent(escape(fileNameEncode));
// https://blog.csdn.net/erdfty/article/details/106134284
}
// 解码
return res.blob();
}
})
.then((data) => {
if (data instanceof Blob) {
let a = document.createElement('a');
url = window.URL.createObjectURL(data);
a.href = url;
a.download = !ext ? responseHeadersFileName : fileName + '.' + ext; // 如果传入的ext 为空字符串(不等于不传) 则使用响应头中的文件作为文件名
a.click();
window.URL.revokeObjectURL(url);
a = null;
} else {
notification.error({
message: `文件导出错误`,
description: data.errMsg,
});
}
})
.catch((err) => {
console.log(err);
notification.error({
message: `网络请求超时`,
});
})
.finally(() => {
return true;
});
fetch(url, {
method,
body: method === 'GET' ? undefined : FormdataWrapper(params),
...getHeaders(),
})
.then((res) => {
if (res.status + '' !== '200') {
return res.json();
} else {
const contentDisposition = res.headers.get('content-disposition');
let fileNameEncode =
contentDisposition && contentDisposition.split('filename=');
if (fileNameEncode.length > 1) {
fileNameEncode = fileNameEncode[1];
responseHeadersFileName = decodeURIComponent(escape(fileNameEncode));
// https://blog.csdn.net/erdfty/article/details/106134284
}
// 解码
return res.blob();
}
})
.then((data) => {
if (data instanceof Blob) {
let a = document.createElement('a');
url = window.URL.createObjectURL(data);
a.href = url;
a.download = !ext ? responseHeadersFileName : fileName + '.' + ext; // 如果传入的ext 为空字符串(不等于不传) 则使用响应头中的文件作为文件名
a.click();
window.URL.revokeObjectURL(url);
a = null;
} else {
notification.error({
message: `文件导出错误`,
description: data.errMsg,
});
}
})
.catch((err) => {
console.log(err);
notification.error({
message: `网络请求超时`,
});
})
.finally(() => {
return true;
});
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论