1 | /**
|
2 | * HTTP Response Header 事件回调函数的参数
|
3 | * @typedef {Object} HeadersReceivedParam
|
4 | * @property {Object} header 开发者服务器返回的 HTTP Response Header
|
5 | */
|
6 | /**
|
7 | * HTTP Response Header 事件的回调函数
|
8 | * @callback HeadersReceivedCallback
|
9 | * @param {HeadersReceivedParam} res 参数
|
10 | */
|
11 | /**
|
12 | * 进度变化回调函数的参数
|
13 | * @typedef {Object} ProgressUpdateParam
|
14 | * @property {number} progress 进度百分比
|
15 | * @property {number} [totalBytesWritten] 已经下载的数据长度,单位 Bytes
|
16 | * @property {number} [totalBytesSent] 已经上传的数据长度,单位 Bytes
|
17 | * @property {number} [totalBytesExpectedToWrite] 预期需要下载的数据总长度,单位 Bytes
|
18 | * @property {number} [totalBytesExpectedToSend] 预期需要上传的数据总长度,单位 Bytes
|
19 | */
|
20 | /**
|
21 | * 进度变化事件的回调函数
|
22 | * @callback ProgressUpdateCallback
|
23 | * @param {ProgressUpdateParam} res 参数
|
24 | */
|
25 | const NETWORK_TIMEOUT = 60000;
|
26 | const XHR_STATS = {
|
27 | UNSENT: 0,
|
28 | OPENED: 1,
|
29 | HEADERS_RECEIVED: 2,
|
30 | LOADING: 3,
|
31 | DONE: 4 // The operation is complete.
|
32 | };
|
33 | /**
|
34 | * 设置xhr的header
|
35 | * @param {XMLHttpRequest} xhr
|
36 | * @param {Object} header
|
37 | */
|
38 | const setHeader = (xhr, header) => {
|
39 | let headerKey;
|
40 | for (headerKey in header) {
|
41 | xhr.setRequestHeader(headerKey, header[headerKey]);
|
42 | }
|
43 | };
|
44 | /**
|
45 | * 将 blob url 转化为文件
|
46 | * @param {string} url 要转换的 blob url
|
47 | * @returns {Promise<File>}
|
48 | */
|
49 | const convertObjectUrlToBlob = url => {
|
50 | return new Promise((resolve, reject) => {
|
51 | const xhr = new XMLHttpRequest();
|
52 | xhr.open('GET', url, true);
|
53 | xhr.responseType = 'blob';
|
54 | xhr.withCredentials = true;
|
55 | xhr.onload = function () {
|
56 | if (this.status === 200) {
|
57 | resolve(this.response);
|
58 | }
|
59 | else {
|
60 | /* eslint-disable prefer-promise-reject-errors */
|
61 | reject({ status: this.status });
|
62 | }
|
63 | };
|
64 | xhr.send();
|
65 | });
|
66 | };
|
67 |
|
68 | export { NETWORK_TIMEOUT, XHR_STATS, convertObjectUrlToBlob, setHeader };
|
69 | //# sourceMappingURL=utils.js.map
|