|
|
@@ -52,12 +52,18 @@ service.interceptors.request.use(config => {
|
|
|
})
|
|
|
|
|
|
// 响应拦截器
|
|
|
-service.interceptors.response.use(res => {
|
|
|
- if (res.config.fileType && res.data instanceof Blob) {
|
|
|
+service.interceptors.response.use(async res => {
|
|
|
+ if (res.data instanceof Blob) {
|
|
|
const value = res.headers['Content-Disposition'] || res.headers['content-disposition'] || '';
|
|
|
- return {
|
|
|
- name: (value.match(/fileName=["']([^"']+)["']/) || [])[1],
|
|
|
- blob: new Blob([res.data], { type: res.config.fileType }),
|
|
|
+ const type = res.headers['Content-Type'] || res.headers['content-type'] || res.config.fileType;
|
|
|
+ if (type === 'application/json') {
|
|
|
+ const text = await res.data.text()
|
|
|
+ res.data = JSON.parse(text);
|
|
|
+ } else {
|
|
|
+ return {
|
|
|
+ name: decodeURIComponent((value.match(/fileName=["']([^"']+)["']/i) || [])[1] || ''),
|
|
|
+ blob: new Blob([res.data], { type }),
|
|
|
+ }
|
|
|
}
|
|
|
} else if (res.config.forced) {
|
|
|
return res;
|