tools-min-ns 1.18.14 → 1.18.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/esm/system/SystemUtil.d.ts +4 -4
- package/esm/system/SystemUtil.js +170 -16
- package/esm/transfer/TransferUtil.d.ts +2 -1
- package/esm/transfer/TransferUtil.js +7 -5
- package/lib/system/SystemUtil.d.ts +4 -4
- package/lib/system/SystemUtil.js +170 -16
- package/lib/transfer/TransferUtil.d.ts +2 -1
- package/lib/transfer/TransferUtil.js +7 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ declare namespace SystemUtil {
|
|
|
20
20
|
* @example
|
|
21
21
|
* downloadFile('http://XXX.txt','text.txt')
|
|
22
22
|
*/
|
|
23
|
-
function downloadFile(url: string, name?: string): void
|
|
23
|
+
function downloadFile(url: string, name?: string): Promise<void>;
|
|
24
24
|
/**
|
|
25
25
|
* 通过base64下载文件
|
|
26
26
|
* @param base64 base64字符串
|
|
@@ -28,13 +28,13 @@ declare namespace SystemUtil {
|
|
|
28
28
|
* @example
|
|
29
29
|
* downloadFileByBase64('data:text/plain;base64,dGV4dDF0ZXh0Mg==','text.txt')
|
|
30
30
|
*/
|
|
31
|
-
function downloadFileByBase64(base64: string, name
|
|
31
|
+
function downloadFileByBase64(base64: string, name: string): void;
|
|
32
32
|
/**
|
|
33
33
|
* 通过Blob下载文件
|
|
34
|
-
* @param response
|
|
34
|
+
* @param response Blob
|
|
35
35
|
* @param name 文件名
|
|
36
36
|
*/
|
|
37
|
-
const downloadFileByBlob: (response:
|
|
37
|
+
const downloadFileByBlob: (response: Blob, name: string) => void;
|
|
38
38
|
/**
|
|
39
39
|
* 拷贝文本至剪切板
|
|
40
40
|
* @param text 文本
|
package/esm/system/SystemUtil.js
CHANGED
|
@@ -1,3 +1,118 @@
|
|
|
1
|
+
var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) {
|
|
3
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
4
|
+
resolve(value);
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
+
function fulfilled(value) {
|
|
9
|
+
try {
|
|
10
|
+
step(generator.next(value));
|
|
11
|
+
} catch (e) {
|
|
12
|
+
reject(e);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function rejected(value) {
|
|
16
|
+
try {
|
|
17
|
+
step(generator["throw"](value));
|
|
18
|
+
} catch (e) {
|
|
19
|
+
reject(e);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function step(result) {
|
|
23
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
24
|
+
}
|
|
25
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
var __generator = this && this.__generator || function (thisArg, body) {
|
|
29
|
+
var _ = {
|
|
30
|
+
label: 0,
|
|
31
|
+
sent: function sent() {
|
|
32
|
+
if (t[0] & 1) throw t[1];
|
|
33
|
+
return t[1];
|
|
34
|
+
},
|
|
35
|
+
trys: [],
|
|
36
|
+
ops: []
|
|
37
|
+
},
|
|
38
|
+
f,
|
|
39
|
+
y,
|
|
40
|
+
t,
|
|
41
|
+
g;
|
|
42
|
+
return g = {
|
|
43
|
+
next: verb(0),
|
|
44
|
+
"throw": verb(1),
|
|
45
|
+
"return": verb(2)
|
|
46
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
|
|
47
|
+
return this;
|
|
48
|
+
}), g;
|
|
49
|
+
function verb(n) {
|
|
50
|
+
return function (v) {
|
|
51
|
+
return step([n, v]);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function step(op) {
|
|
55
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
56
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
57
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
58
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
59
|
+
switch (op[0]) {
|
|
60
|
+
case 0:
|
|
61
|
+
case 1:
|
|
62
|
+
t = op;
|
|
63
|
+
break;
|
|
64
|
+
case 4:
|
|
65
|
+
_.label++;
|
|
66
|
+
return {
|
|
67
|
+
value: op[1],
|
|
68
|
+
done: false
|
|
69
|
+
};
|
|
70
|
+
case 5:
|
|
71
|
+
_.label++;
|
|
72
|
+
y = op[1];
|
|
73
|
+
op = [0];
|
|
74
|
+
continue;
|
|
75
|
+
case 7:
|
|
76
|
+
op = _.ops.pop();
|
|
77
|
+
_.trys.pop();
|
|
78
|
+
continue;
|
|
79
|
+
default:
|
|
80
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
81
|
+
_ = 0;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
85
|
+
_.label = op[1];
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
89
|
+
_.label = t[1];
|
|
90
|
+
t = op;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
if (t && _.label < t[2]) {
|
|
94
|
+
_.label = t[2];
|
|
95
|
+
_.ops.push(op);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
if (t[2]) _.ops.pop();
|
|
99
|
+
_.trys.pop();
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
op = body.call(thisArg, _);
|
|
103
|
+
} catch (e) {
|
|
104
|
+
op = [6, e];
|
|
105
|
+
y = 0;
|
|
106
|
+
} finally {
|
|
107
|
+
f = t = 0;
|
|
108
|
+
}
|
|
109
|
+
if (op[0] & 5) throw op[1];
|
|
110
|
+
return {
|
|
111
|
+
value: op[0] ? op[1] : void 0,
|
|
112
|
+
done: true
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
};
|
|
1
116
|
/**
|
|
2
117
|
* 系统工具
|
|
3
118
|
* @description
|
|
@@ -32,13 +147,44 @@ var SystemUtil;
|
|
|
32
147
|
* downloadFile('http://XXX.txt','text.txt')
|
|
33
148
|
*/
|
|
34
149
|
function downloadFile(url, name) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
150
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
151
|
+
var response, blob, error_1, a, clickEvent;
|
|
152
|
+
return __generator(this, function (_a) {
|
|
153
|
+
switch (_a.label) {
|
|
154
|
+
case 0:
|
|
155
|
+
_a.trys.push([0, 3,, 4]);
|
|
156
|
+
return [4 /*yield*/, fetch(url, {
|
|
157
|
+
method: 'GET',
|
|
158
|
+
headers: {
|
|
159
|
+
'Cache-Control': 'no-cache'
|
|
160
|
+
}
|
|
161
|
+
})];
|
|
162
|
+
case 1:
|
|
163
|
+
response = _a.sent();
|
|
164
|
+
if (!response.ok) {
|
|
165
|
+
throw new Error("HTTP error! status: ".concat(response.status));
|
|
166
|
+
}
|
|
167
|
+
return [4 /*yield*/, response.blob()];
|
|
168
|
+
case 2:
|
|
169
|
+
blob = _a.sent();
|
|
170
|
+
SystemUtil.downloadFileByBlob(blob, name || url.split('/').pop());
|
|
171
|
+
return [3 /*break*/, 4];
|
|
172
|
+
case 3:
|
|
173
|
+
error_1 = _a.sent();
|
|
174
|
+
console.error('下载失败:', error_1);
|
|
175
|
+
a = document.createElement('a');
|
|
176
|
+
a.setAttribute('href', url);
|
|
177
|
+
if (name) a.setAttribute('download', name);
|
|
178
|
+
a.setAttribute('target', '_blank');
|
|
179
|
+
clickEvent = document.createEvent('MouseEvents');
|
|
180
|
+
clickEvent.initEvent('click', true, true);
|
|
181
|
+
a.dispatchEvent(clickEvent);
|
|
182
|
+
return [3 /*break*/, 4];
|
|
183
|
+
case 4:
|
|
184
|
+
return [2 /*return*/];
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
});
|
|
42
188
|
}
|
|
43
189
|
SystemUtil.downloadFile = downloadFile;
|
|
44
190
|
/**
|
|
@@ -49,24 +195,32 @@ var SystemUtil;
|
|
|
49
195
|
* downloadFileByBase64('data:text/plain;base64,dGV4dDF0ZXh0Mg==','text.txt')
|
|
50
196
|
*/
|
|
51
197
|
function downloadFileByBase64(base64, name) {
|
|
52
|
-
var myBlob = TransferUtil.getBlobByBase64(base64);
|
|
198
|
+
var myBlob = TransferUtil.getBlobByBase64(base64, 'application/octet-stream');
|
|
53
199
|
if (!myBlob) return;
|
|
54
|
-
|
|
55
|
-
downloadFile(myUrl, name);
|
|
200
|
+
SystemUtil.downloadFileByBlob(myBlob, name);
|
|
56
201
|
}
|
|
57
202
|
SystemUtil.downloadFileByBase64 = downloadFileByBase64;
|
|
58
203
|
/**
|
|
59
204
|
* 通过Blob下载文件
|
|
60
|
-
* @param response
|
|
205
|
+
* @param response Blob
|
|
61
206
|
* @param name 文件名
|
|
62
207
|
*/
|
|
63
208
|
SystemUtil.downloadFileByBlob = function (response, name) {
|
|
64
|
-
var
|
|
65
|
-
type: 'application/
|
|
209
|
+
var blob = new Blob([response], {
|
|
210
|
+
type: 'application/octet-stream'
|
|
66
211
|
});
|
|
67
|
-
|
|
68
|
-
var
|
|
69
|
-
|
|
212
|
+
var objectUrl = window.URL.createObjectURL(blob);
|
|
213
|
+
var link = document.createElement('a');
|
|
214
|
+
link.style.display = 'none';
|
|
215
|
+
link.href = objectUrl;
|
|
216
|
+
link.download = name;
|
|
217
|
+
document.body.appendChild(link);
|
|
218
|
+
link.click();
|
|
219
|
+
document.body.removeChild(link);
|
|
220
|
+
// 延迟释放URL,确保下载完成
|
|
221
|
+
setTimeout(function () {
|
|
222
|
+
return window.URL.revokeObjectURL(objectUrl);
|
|
223
|
+
}, 100);
|
|
70
224
|
};
|
|
71
225
|
/**
|
|
72
226
|
* 拷贝文本至剪切板
|
|
@@ -35,10 +35,11 @@ declare namespace TransferUtil {
|
|
|
35
35
|
/**
|
|
36
36
|
* base64转blob流
|
|
37
37
|
* @param base64 base64字符串
|
|
38
|
+
* @param mimeString mime类型
|
|
38
39
|
* @example
|
|
39
40
|
* getBlobByBase64('data:text/plain;base64,dGV4dDF0ZXh0Mg==') => new Blob(['text1', 'text2'], {type : 'text/plain'})
|
|
40
41
|
*/
|
|
41
|
-
function getBlobByBase64(base64: string): Blob | undefined;
|
|
42
|
+
function getBlobByBase64(base64: string, mimeString?: string): Blob | undefined;
|
|
42
43
|
/**
|
|
43
44
|
* blob流转换为base64
|
|
44
45
|
* @param blob blob流
|
|
@@ -82,19 +82,21 @@ var TransferUtil;
|
|
|
82
82
|
/**
|
|
83
83
|
* base64转blob流
|
|
84
84
|
* @param base64 base64字符串
|
|
85
|
+
* @param mimeString mime类型
|
|
85
86
|
* @example
|
|
86
87
|
* getBlobByBase64('data:text/plain;base64,dGV4dDF0ZXh0Mg==') => new Blob(['text1', 'text2'], {type : 'text/plain'})
|
|
87
88
|
*/
|
|
88
|
-
function getBlobByBase64(base64) {
|
|
89
|
+
function getBlobByBase64(base64, mimeString) {
|
|
89
90
|
var _a, _b, _c;
|
|
90
91
|
if (BaseUtil.isEmpty(base64)) return undefined;
|
|
91
92
|
var byteString;
|
|
92
|
-
if (((_b = (_a = base64 === null || base64 === void 0 ? void 0 : base64.split(',')) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.indexOf('base64')) >= 0)
|
|
93
|
-
|
|
94
|
-
else {
|
|
93
|
+
if (((_b = (_a = base64 === null || base64 === void 0 ? void 0 : base64.split(',')) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.indexOf('base64')) >= 0) {
|
|
94
|
+
byteString = atob(base64.split(',')[1]);
|
|
95
|
+
} else {
|
|
96
|
+
//base64 解码
|
|
95
97
|
byteString = unescape((_c = base64.split(',')) === null || _c === void 0 ? void 0 : _c[1]);
|
|
96
98
|
}
|
|
97
|
-
|
|
99
|
+
mimeString = mimeString || base64.split(',')[0].split(':')[1].split(';')[0]; //mime类型 -- image/png
|
|
98
100
|
var ia = new Uint8Array(byteString.length); //创建视图
|
|
99
101
|
for (var i = 0; i < byteString.length; i++) {
|
|
100
102
|
ia[i] = byteString.charCodeAt(i);
|
|
@@ -20,7 +20,7 @@ declare namespace SystemUtil {
|
|
|
20
20
|
* @example
|
|
21
21
|
* downloadFile('http://XXX.txt','text.txt')
|
|
22
22
|
*/
|
|
23
|
-
function downloadFile(url: string, name?: string): void
|
|
23
|
+
function downloadFile(url: string, name?: string): Promise<void>;
|
|
24
24
|
/**
|
|
25
25
|
* 通过base64下载文件
|
|
26
26
|
* @param base64 base64字符串
|
|
@@ -28,13 +28,13 @@ declare namespace SystemUtil {
|
|
|
28
28
|
* @example
|
|
29
29
|
* downloadFileByBase64('data:text/plain;base64,dGV4dDF0ZXh0Mg==','text.txt')
|
|
30
30
|
*/
|
|
31
|
-
function downloadFileByBase64(base64: string, name
|
|
31
|
+
function downloadFileByBase64(base64: string, name: string): void;
|
|
32
32
|
/**
|
|
33
33
|
* 通过Blob下载文件
|
|
34
|
-
* @param response
|
|
34
|
+
* @param response Blob
|
|
35
35
|
* @param name 文件名
|
|
36
36
|
*/
|
|
37
|
-
const downloadFileByBlob: (response:
|
|
37
|
+
const downloadFileByBlob: (response: Blob, name: string) => void;
|
|
38
38
|
/**
|
|
39
39
|
* 拷贝文本至剪切板
|
|
40
40
|
* @param text 文本
|
package/lib/system/SystemUtil.js
CHANGED
|
@@ -1,5 +1,120 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) {
|
|
5
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
6
|
+
resolve(value);
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) {
|
|
11
|
+
try {
|
|
12
|
+
step(generator.next(value));
|
|
13
|
+
} catch (e) {
|
|
14
|
+
reject(e);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function rejected(value) {
|
|
18
|
+
try {
|
|
19
|
+
step(generator["throw"](value));
|
|
20
|
+
} catch (e) {
|
|
21
|
+
reject(e);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function step(result) {
|
|
25
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
26
|
+
}
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var __generator = this && this.__generator || function (thisArg, body) {
|
|
31
|
+
var _ = {
|
|
32
|
+
label: 0,
|
|
33
|
+
sent: function sent() {
|
|
34
|
+
if (t[0] & 1) throw t[1];
|
|
35
|
+
return t[1];
|
|
36
|
+
},
|
|
37
|
+
trys: [],
|
|
38
|
+
ops: []
|
|
39
|
+
},
|
|
40
|
+
f,
|
|
41
|
+
y,
|
|
42
|
+
t,
|
|
43
|
+
g;
|
|
44
|
+
return g = {
|
|
45
|
+
next: verb(0),
|
|
46
|
+
"throw": verb(1),
|
|
47
|
+
"return": verb(2)
|
|
48
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
|
|
49
|
+
return this;
|
|
50
|
+
}), g;
|
|
51
|
+
function verb(n) {
|
|
52
|
+
return function (v) {
|
|
53
|
+
return step([n, v]);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function step(op) {
|
|
57
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
58
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
59
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
60
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
61
|
+
switch (op[0]) {
|
|
62
|
+
case 0:
|
|
63
|
+
case 1:
|
|
64
|
+
t = op;
|
|
65
|
+
break;
|
|
66
|
+
case 4:
|
|
67
|
+
_.label++;
|
|
68
|
+
return {
|
|
69
|
+
value: op[1],
|
|
70
|
+
done: false
|
|
71
|
+
};
|
|
72
|
+
case 5:
|
|
73
|
+
_.label++;
|
|
74
|
+
y = op[1];
|
|
75
|
+
op = [0];
|
|
76
|
+
continue;
|
|
77
|
+
case 7:
|
|
78
|
+
op = _.ops.pop();
|
|
79
|
+
_.trys.pop();
|
|
80
|
+
continue;
|
|
81
|
+
default:
|
|
82
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
83
|
+
_ = 0;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
87
|
+
_.label = op[1];
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
91
|
+
_.label = t[1];
|
|
92
|
+
t = op;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
if (t && _.label < t[2]) {
|
|
96
|
+
_.label = t[2];
|
|
97
|
+
_.ops.push(op);
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
if (t[2]) _.ops.pop();
|
|
101
|
+
_.trys.pop();
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
op = body.call(thisArg, _);
|
|
105
|
+
} catch (e) {
|
|
106
|
+
op = [6, e];
|
|
107
|
+
y = 0;
|
|
108
|
+
} finally {
|
|
109
|
+
f = t = 0;
|
|
110
|
+
}
|
|
111
|
+
if (op[0] & 5) throw op[1];
|
|
112
|
+
return {
|
|
113
|
+
value: op[0] ? op[1] : void 0,
|
|
114
|
+
done: true
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
};
|
|
3
118
|
var __importDefault = this && this.__importDefault || function (mod) {
|
|
4
119
|
return mod && mod.__esModule ? mod : {
|
|
5
120
|
"default": mod
|
|
@@ -42,13 +157,44 @@ var SystemUtil;
|
|
|
42
157
|
* downloadFile('http://XXX.txt','text.txt')
|
|
43
158
|
*/
|
|
44
159
|
function downloadFile(url, name) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
160
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
161
|
+
var response, blob, error_1, a, clickEvent;
|
|
162
|
+
return __generator(this, function (_a) {
|
|
163
|
+
switch (_a.label) {
|
|
164
|
+
case 0:
|
|
165
|
+
_a.trys.push([0, 3,, 4]);
|
|
166
|
+
return [4 /*yield*/, fetch(url, {
|
|
167
|
+
method: 'GET',
|
|
168
|
+
headers: {
|
|
169
|
+
'Cache-Control': 'no-cache'
|
|
170
|
+
}
|
|
171
|
+
})];
|
|
172
|
+
case 1:
|
|
173
|
+
response = _a.sent();
|
|
174
|
+
if (!response.ok) {
|
|
175
|
+
throw new Error("HTTP error! status: ".concat(response.status));
|
|
176
|
+
}
|
|
177
|
+
return [4 /*yield*/, response.blob()];
|
|
178
|
+
case 2:
|
|
179
|
+
blob = _a.sent();
|
|
180
|
+
SystemUtil.downloadFileByBlob(blob, name || url.split('/').pop());
|
|
181
|
+
return [3 /*break*/, 4];
|
|
182
|
+
case 3:
|
|
183
|
+
error_1 = _a.sent();
|
|
184
|
+
console.error('下载失败:', error_1);
|
|
185
|
+
a = document.createElement('a');
|
|
186
|
+
a.setAttribute('href', url);
|
|
187
|
+
if (name) a.setAttribute('download', name);
|
|
188
|
+
a.setAttribute('target', '_blank');
|
|
189
|
+
clickEvent = document.createEvent('MouseEvents');
|
|
190
|
+
clickEvent.initEvent('click', true, true);
|
|
191
|
+
a.dispatchEvent(clickEvent);
|
|
192
|
+
return [3 /*break*/, 4];
|
|
193
|
+
case 4:
|
|
194
|
+
return [2 /*return*/];
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
});
|
|
52
198
|
}
|
|
53
199
|
SystemUtil.downloadFile = downloadFile;
|
|
54
200
|
/**
|
|
@@ -59,24 +205,32 @@ var SystemUtil;
|
|
|
59
205
|
* downloadFileByBase64('data:text/plain;base64,dGV4dDF0ZXh0Mg==','text.txt')
|
|
60
206
|
*/
|
|
61
207
|
function downloadFileByBase64(base64, name) {
|
|
62
|
-
var myBlob = TransferUtil_1.default.getBlobByBase64(base64);
|
|
208
|
+
var myBlob = TransferUtil_1.default.getBlobByBase64(base64, 'application/octet-stream');
|
|
63
209
|
if (!myBlob) return;
|
|
64
|
-
|
|
65
|
-
downloadFile(myUrl, name);
|
|
210
|
+
SystemUtil.downloadFileByBlob(myBlob, name);
|
|
66
211
|
}
|
|
67
212
|
SystemUtil.downloadFileByBase64 = downloadFileByBase64;
|
|
68
213
|
/**
|
|
69
214
|
* 通过Blob下载文件
|
|
70
|
-
* @param response
|
|
215
|
+
* @param response Blob
|
|
71
216
|
* @param name 文件名
|
|
72
217
|
*/
|
|
73
218
|
SystemUtil.downloadFileByBlob = function (response, name) {
|
|
74
|
-
var
|
|
75
|
-
type: 'application/
|
|
219
|
+
var blob = new Blob([response], {
|
|
220
|
+
type: 'application/octet-stream'
|
|
76
221
|
});
|
|
77
|
-
|
|
78
|
-
var
|
|
79
|
-
|
|
222
|
+
var objectUrl = window.URL.createObjectURL(blob);
|
|
223
|
+
var link = document.createElement('a');
|
|
224
|
+
link.style.display = 'none';
|
|
225
|
+
link.href = objectUrl;
|
|
226
|
+
link.download = name;
|
|
227
|
+
document.body.appendChild(link);
|
|
228
|
+
link.click();
|
|
229
|
+
document.body.removeChild(link);
|
|
230
|
+
// 延迟释放URL,确保下载完成
|
|
231
|
+
setTimeout(function () {
|
|
232
|
+
return window.URL.revokeObjectURL(objectUrl);
|
|
233
|
+
}, 100);
|
|
80
234
|
};
|
|
81
235
|
/**
|
|
82
236
|
* 拷贝文本至剪切板
|
|
@@ -35,10 +35,11 @@ declare namespace TransferUtil {
|
|
|
35
35
|
/**
|
|
36
36
|
* base64转blob流
|
|
37
37
|
* @param base64 base64字符串
|
|
38
|
+
* @param mimeString mime类型
|
|
38
39
|
* @example
|
|
39
40
|
* getBlobByBase64('data:text/plain;base64,dGV4dDF0ZXh0Mg==') => new Blob(['text1', 'text2'], {type : 'text/plain'})
|
|
40
41
|
*/
|
|
41
|
-
function getBlobByBase64(base64: string): Blob | undefined;
|
|
42
|
+
function getBlobByBase64(base64: string, mimeString?: string): Blob | undefined;
|
|
42
43
|
/**
|
|
43
44
|
* blob流转换为base64
|
|
44
45
|
* @param blob blob流
|
|
@@ -92,19 +92,21 @@ var TransferUtil;
|
|
|
92
92
|
/**
|
|
93
93
|
* base64转blob流
|
|
94
94
|
* @param base64 base64字符串
|
|
95
|
+
* @param mimeString mime类型
|
|
95
96
|
* @example
|
|
96
97
|
* getBlobByBase64('data:text/plain;base64,dGV4dDF0ZXh0Mg==') => new Blob(['text1', 'text2'], {type : 'text/plain'})
|
|
97
98
|
*/
|
|
98
|
-
function getBlobByBase64(base64) {
|
|
99
|
+
function getBlobByBase64(base64, mimeString) {
|
|
99
100
|
var _a, _b, _c;
|
|
100
101
|
if (BaseUtil_1.default.isEmpty(base64)) return undefined;
|
|
101
102
|
var byteString;
|
|
102
|
-
if (((_b = (_a = base64 === null || base64 === void 0 ? void 0 : base64.split(',')) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.indexOf('base64')) >= 0)
|
|
103
|
-
|
|
104
|
-
else {
|
|
103
|
+
if (((_b = (_a = base64 === null || base64 === void 0 ? void 0 : base64.split(',')) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.indexOf('base64')) >= 0) {
|
|
104
|
+
byteString = atob(base64.split(',')[1]);
|
|
105
|
+
} else {
|
|
106
|
+
//base64 解码
|
|
105
107
|
byteString = unescape((_c = base64.split(',')) === null || _c === void 0 ? void 0 : _c[1]);
|
|
106
108
|
}
|
|
107
|
-
|
|
109
|
+
mimeString = mimeString || base64.split(',')[0].split(':')[1].split(';')[0]; //mime类型 -- image/png
|
|
108
110
|
var ia = new Uint8Array(byteString.length); //创建视图
|
|
109
111
|
for (var i = 0; i < byteString.length; i++) {
|
|
110
112
|
ia[i] = byteString.charCodeAt(i);
|