uniapp-request-sdk 1.6.1 → 1.7.0

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/dist/index.d.ts CHANGED
@@ -15,6 +15,8 @@ interface IParams {
15
15
  timeout?: number;
16
16
  /** 上传文件的请求超时时间,ms为单位,默认5s */
17
17
  uploadTimeout?: number;
18
+ /** 下载文件的请求超时时间,ms为单位,默认30s */
19
+ downloadTimeout?: number;
18
20
  /** 请求尝试延迟时间默认3s,ms为单位 */
19
21
  retryDelay?: number;
20
22
  /** token,APP初始化给到小程序的token */
@@ -30,40 +32,102 @@ interface IParams {
30
32
  /** 用户名,用于日志排查使用 */
31
33
  username?: string;
32
34
  }
35
+ /**
36
+ * uni.uploadFile 的选项扩展类型,支持进度回调
37
+ * @description 在 UploadFileOption 基础上扩展了进度更新回调
38
+ */
33
39
  type UploadFileWithProgressOption = UploadFileOption & {
40
+ /** 上传进度更新回调函数 */
34
41
  onProgressUpdateCallback?: (result: OnProgressUpdateResult) => void;
35
42
  };
36
- declare function requestPromise(options?: RequestOptions & {
37
- timeout: number;
38
- }): Promise<RequestSuccessCallbackResult>;
43
+ /**
44
+ * uni.downloadFile 的选项扩展类型,支持进度回调
45
+ * @description 在 DownloadFileOption 基础上扩展了进度更新回调
46
+ */
47
+ type DownloadFileWithProgressOption = DownloadFileOption & {
48
+ /** 下载进度更新回调函数 */
49
+ onProgressUpdateCallback?: (result: any) => void;
50
+ };
51
+ /**
52
+ * UniRequest 网络请求管理类
53
+ * @description 统一封装 uni-app 的网络请求(request、uploadFile、downloadFile),
54
+ * 提供 Promise 风格的 API 和高级特性,如自动重试、token 管理、请求头预处理等
55
+ * @example
56
+ * const uniRequest = new UniRequest({
57
+ * baseUrl: 'https://api.example.com',
58
+ * timeout: 10000,
59
+ * uploadTimeout: 5000
60
+ * });
61
+ *
62
+ * // 普通请求
63
+ * const data = await uniRequest.post('/path', { key: 'value' });
64
+ *
65
+ * // 上传文件
66
+ * const result = await uniRequest.uploadFile('/upload', filePath, formData);
67
+ *
68
+ * // 下载文件
69
+ * const filePath = await uniRequest.downloadFile('/download/file.pdf');
70
+ */
39
71
  declare class UniRequest {
40
- /** 基准路径 */
72
+ /** 基准路径,用于构建完整的请求 URL */
41
73
  private baseUrl;
42
- /** 用户名 */
74
+ /** 用户名,用于日志记录和问题排查 */
43
75
  private username;
44
- /** 错误处理函数 */
76
+ /** 错误处理函数,当请求失败时会被调用 */
45
77
  private onErrorHandler;
46
- /** 默认请求头 */
78
+ /** 默认请求头,会被合并到所有请求中 */
47
79
  private header?;
48
- /** 请求头预处理函数 */
80
+ /** 请求头预处理函数,用于动态修改请求头(在 token 设置之后执行) */
49
81
  private headerProcessor?;
82
+ /** 请求失败时的最大重试次数,默认 3 次 */
50
83
  private maxRetryCount;
51
- /** 超时时间 */
84
+ /** 普通请求的超时时间,单位毫秒,默认 10 秒 */
52
85
  private timeout;
53
- /** 上传文件的超时时间 */
86
+ /** 上传文件的超时时间,单位毫秒,默认 5 秒 */
54
87
  private uploadTimeout;
88
+ /** 下载文件的超时时间,单位毫秒,默认 30 秒 */
89
+ private downloadTimeout;
90
+ /** 请求失败后的重试延迟时间,单位毫秒,默认 3 秒 */
55
91
  private retryDelay;
92
+ /** 当前的 token,用于授权请求 */
56
93
  private token?;
94
+ /** 获取 token 的事件名称,默认为 'getToken' */
57
95
  private tokenEventName;
58
- /** token的header名称,默认Authorization */
96
+ /** token 所在的请求头字段名称,默认为 'Authorization' */
59
97
  private tokenHeader;
60
- /** 传入的token前缀,默认Bearer ,注意Bearer有个空字符串*/
98
+ /** token 的前缀,默认为 'Bearer '(注意末尾有空格) */
61
99
  private tokenPrefix;
62
- /** 自定义得到token的函数 */
100
+ /** 自定义的获取 token 函数,若未设置则使用 getToken() */
63
101
  private getTokenFun?;
102
+ /**
103
+ * 构造函数,初始化 UniRequest 实例
104
+ * @param params - 初始化参数,详见 IParams 接口
105
+ */
64
106
  constructor(params?: IParams);
107
+ /**
108
+ * 内部错误处理函数
109
+ * @description 触发 reject 并调用全局错误处理函数
110
+ * @param rej - Promise 的 reject 函数
111
+ * @param data - 错误数据
112
+ */
65
113
  private rejectHandler;
114
+ /**
115
+ * 动态设置配置参数
116
+ * @description 可以在实例创建后动态修改配置,用于变更超时时间、token、请求头等
117
+ * @param params - 要设置的参数,详见 IParams 接口
118
+ * @example
119
+ * uniRequest.setParams({ token: 'new_token', timeout: 15000 });
120
+ */
66
121
  setParams(params?: IParams): void;
122
+ /**
123
+ * 底层通用请求方法
124
+ * @description 所有具体的请求方法(post、get 等)都调用此方法来执行请求。
125
+ * 支持自动重试、token 管理、请求头处理等高级功能
126
+ * @param params - 请求参数,包含 url、method、data、header、timeout 等
127
+ * @param callbackPromise - 回调函数,可以是 requestPromise、uploadFilePromise 或 downloadFilePromise
128
+ * @returns Promise<T> 返回解析后的响应数据
129
+ * @internal 此方法不建议直接调用,应使用 post、get、uploadFile 等高层方法
130
+ */
67
131
  request<T>(params: {
68
132
  url: string;
69
133
  method: RequestOptions['method'];
@@ -71,29 +135,91 @@ declare class UniRequest {
71
135
  header?: RequestOptions['header'];
72
136
  /** 超时时间 */
73
137
  timeout?: number;
74
- } & RequestOptions & UploadFileWithProgressOption, callbackPromise?: typeof requestPromise): Promise<T>;
138
+ } & RequestOptions & UploadFileWithProgressOption & DownloadFileWithProgressOption, callbackPromise?: any): Promise<T>;
75
139
  /**
76
- * post请求
77
- * @param url
78
- * @param data 可传可不传
79
- * @param header
80
- * @returns
140
+ * 发送 POST 请求
141
+ * @param url - 请求地址;支持相对路径(会拼接 baseUrl)和完整的 http/https 地址
142
+ * @param data - 请求数据,可选;如不传递则默认为空对象
143
+ * @param header - 当前请求的自定义请求头;会与实例级公共请求头合并
144
+ * @returns Promise<T> 返回解析后的响应数据
145
+ * @example
146
+ * const result = await uniRequest.post('/users', { name: 'John', age: 30 });
147
+ * const result = await uniRequest.post('https://api.example.com/users', data);
81
148
  */
82
149
  post<T>(url: string, data?: {}, header?: Record<string, string>): Promise<T>;
150
+ /**
151
+ * 发送 GET 请求
152
+ * @param url - 请求地址;支持相对路径(会拼接 baseUrl)和完整的 http/https 地址
153
+ * @param data - 查询参数,可选;如不传递则默认为空对象
154
+ * @param header - 当前请求的自定义请求头;会与实例级公共请求头合并
155
+ * @returns Promise<T> 返回解析后的响应数据
156
+ * @example
157
+ * const result = await uniRequest.get('/users', { page: 1, limit: 10 });
158
+ */
83
159
  get<T>(url: string, data?: {}, header?: Record<string, string>): Promise<T>;
160
+ /**
161
+ * 发送 DELETE 请求
162
+ * @param url - 请求地址;支持相对路径(会拼接 baseUrl)和完整的 http/https 地址
163
+ * @param data - 请求数据,可选;如不传递则默认为空对象
164
+ * @param header - 当前请求的自定义请求头;会与实例级公共请求头合并
165
+ * @returns Promise<T> 返回解析后的响应数据
166
+ * @example
167
+ * const result = await uniRequest.delete('/users/123');
168
+ */
84
169
  delete<T>(url: string, data?: {}, header?: Record<string, string>): Promise<T>;
170
+ /**
171
+ * 发送 PUT 请求
172
+ * @param url - 请求地址;支持相对路径(会拼接 baseUrl)和完整的 http/https 地址
173
+ * @param data - 请求数据,可选;如不传递则默认为空对象
174
+ * @param header - 当前请求的自定义请求头;会与实例级公共请求头合并
175
+ * @returns Promise<T> 返回解析后的响应数据
176
+ * @example
177
+ * const result = await uniRequest.put('/users/123', { name: 'Jane', age: 25 });
178
+ */
85
179
  put<T>(url: string, data?: {}, header?: Record<string, string>): Promise<T>;
86
180
  /**
87
181
  * 文件上传
88
- * @param url 上传接口地址;支持相对路径和完整的 http/https 地址
89
- * @param filePath 待上传文件的本地临时路径
90
- * @param formData 额外的表单字段,会与文件一起作为 multipart/form-data 提交
91
- * @param name 文件字段名;服务端通过该字段读取文件内容,默认值为 file
92
- * @param header 当前上传请求的自定义请求头;会与实例级公共请求头合并
93
- * @param onProgressUpdateCallback 上传进度回调;传入后会绑定到 uni.uploadFile 返回的 UploadTask.onProgressUpdate
94
- * @returns 返回一个 Promise;成功时解析服务端响应中的 data 字段,失败时抛出错误信息
182
+ * @param url - 上传接口地址;支持相对路径和完整的 http/https 地址
183
+ * @param filePath - 待上传文件的本地临时路径
184
+ * @param formData - 额外的表单字段,会与文件一起作为 multipart/form-data 提交
185
+ * @param name - 文件字段名;服务端通过该字段读取文件内容,默认值为 file
186
+ * @param header - 当前上传请求的自定义请求头;会与实例级公共请求头合并
187
+ * @param onProgressUpdateCallback - 上传进度回调;传入后会绑定到 uni.uploadFile 返回的 UploadTask.onProgressUpdate
188
+ * @returns Promise<T> 返回一个 Promise;成功时解析服务端响应中的 data 字段,失败时抛出错误信息
189
+ * @example
190
+ * const result = await uniRequest.uploadFile('/upload', filePath);
191
+ *
192
+ * // 带上传进度
193
+ * const result = await uniRequest.uploadFile(
194
+ * '/upload',
195
+ * filePath,
196
+ * { category: 'profile' },
197
+ * 'file',
198
+ * { 'Authorization': 'Bearer token' },
199
+ * (progress) => console.log(`上传进度: ${progress.progress}%`)
200
+ * );
95
201
  */
96
202
  uploadFile<T>(url: string, filePath: string, formData?: Record<string, any>, name?: string, header?: Record<string, string>, onProgressUpdateCallback?: (result: OnProgressUpdateResult) => void): Promise<T>;
203
+ /**
204
+ * 文件下载
205
+ * @param url - 下载资源的 url;支持相对路径和完整的 http/https 地址
206
+ * @param filePath - 指定文件下载后存储的路径(本地路径),仅小程序端支持;如不指定则保存到临时目录
207
+ * @param header - 当前下载请求的自定义请求头;会与实例级公共请求头合并
208
+ * @param onProgressUpdateCallback - 下载进度回调;传入后会绑定到 uni.downloadFile 返回的 DownloadTask.onProgressUpdate
209
+ * @returns Promise<T> 返回一个 Promise;成功时解析得到的文件临时路径(tempFilePath),失败时抛出错误信息
210
+ * @example
211
+ * // 简单下载
212
+ * const filePath = await uniRequest.downloadFile('/files/document.pdf');
213
+ *
214
+ * // 带自定义保存路径和进度回调
215
+ * const filePath = await uniRequest.downloadFile(
216
+ * '/files/large-file.zip',
217
+ * 'local/storage/path',
218
+ * { 'Authorization': 'Bearer token' },
219
+ * (progress) => console.log(`下载进度: ${progress.progress}%`)
220
+ * );
221
+ */
222
+ downloadFile<T extends string = string>(url: string, filePath?: string, header?: Record<string, string>, onProgressUpdateCallback?: (result: any) => void): Promise<T>;
97
223
  }
98
224
 
99
225
  export { IParams, UniRequest as default };
package/dist/index.esm.js CHANGED
@@ -398,6 +398,12 @@ var EVENT_NAME = {
398
398
  /** 通知APP退出到登录页面 */
399
399
  LOGOUT: 'logout'
400
400
  };
401
+ /**
402
+ * uni.request 的 Promise 包装函数
403
+ * @description 将回调式的 uni.request 转换为 Promise 风格,便于与 async/await 配合使用
404
+ * @param options - uni.request 的选项参数,必须包含 timeout 字段
405
+ * @returns Promise<RequestSuccessCallbackResult> 请求成功的响应数据
406
+ */
401
407
  function requestPromise(options) {
402
408
  return new Promise(function (res, rej) {
403
409
  uni.request(Object.assign(Object.assign({}, options), {
@@ -406,6 +412,12 @@ function requestPromise(options) {
406
412
  }));
407
413
  });
408
414
  }
415
+ /**
416
+ * uni.uploadFile 的 Promise 包装函数
417
+ * @description 将回调式的 uni.uploadFile 转换为 Promise 风格,并自动处理进度回调的绑定
418
+ * @param options - uni.uploadFile 的选项参数,支持 onProgressUpdateCallback 扩展字段
419
+ * @returns Promise<UploadFileSuccessCallbackResult> 上传成功的响应数据
420
+ */
409
421
  function uploadFilePromise(options) {
410
422
  return new Promise(function (res, rej) {
411
423
  var _a = options || {},
@@ -420,7 +432,32 @@ function uploadFilePromise(options) {
420
432
  }
421
433
  });
422
434
  }
423
- /** 得到小程序的token */
435
+ /**
436
+ * uni.downloadFile 的 Promise 包装函数
437
+ * @description 将回调式的 uni.downloadFile 转换为 Promise 风格,并自动处理进度回调的绑定
438
+ * @param options - uni.downloadFile 的选项参数,支持 onProgressUpdateCallback 扩展字段
439
+ * @returns Promise<any> 下载成功的响应数据(包含 tempFilePath 等)
440
+ */
441
+ function downloadFilePromise(options) {
442
+ return new Promise(function (res, rej) {
443
+ var _a = options || {},
444
+ onProgressUpdateCallback = _a.onProgressUpdateCallback,
445
+ downloadOptions = __rest(_a, ["onProgressUpdateCallback"]);
446
+ var downloadTask = uni.downloadFile(Object.assign(Object.assign({}, downloadOptions), {
447
+ success: res,
448
+ fail: rej
449
+ }));
450
+ if (onProgressUpdateCallback) {
451
+ downloadTask.onProgressUpdate(onProgressUpdateCallback);
452
+ }
453
+ });
454
+ }
455
+ /**
456
+ * 从客户端获取 token
457
+ * @description 通过 uni.sendNativeEvent 向原生应用发送事件请求 token,超时时间为 5 秒
458
+ * @param eventName - 事件名称,用于向原生应用指示要获取 token
459
+ * @returns Promise<string> 返回获取到的 token 字符串
460
+ */
424
461
  function getToken(eventName) {
425
462
  return new Promise(function (res, rej) {
426
463
  var timeout = setTimeout(rej, 5000);
@@ -430,28 +467,57 @@ function getToken(eventName) {
430
467
  });
431
468
  });
432
469
  }
470
+ /**
471
+ * UniRequest 网络请求管理类
472
+ * @description 统一封装 uni-app 的网络请求(request、uploadFile、downloadFile),
473
+ * 提供 Promise 风格的 API 和高级特性,如自动重试、token 管理、请求头预处理等
474
+ * @example
475
+ * const uniRequest = new UniRequest({
476
+ * baseUrl: 'https://api.example.com',
477
+ * timeout: 10000,
478
+ * uploadTimeout: 5000
479
+ * });
480
+ *
481
+ * // 普通请求
482
+ * const data = await uniRequest.post('/path', { key: 'value' });
483
+ *
484
+ * // 上传文件
485
+ * const result = await uniRequest.uploadFile('/upload', filePath, formData);
486
+ *
487
+ * // 下载文件
488
+ * const filePath = await uniRequest.downloadFile('/download/file.pdf');
489
+ */
433
490
  var UniRequest = /*#__PURE__*/function () {
491
+ /**
492
+ * 构造函数,初始化 UniRequest 实例
493
+ * @param params - 初始化参数,详见 IParams 接口
494
+ */
434
495
  function UniRequest(params) {
435
496
  var _this = this;
436
497
  _classCallCheck(this, UniRequest);
437
- /** 基准路径 */
498
+ /** 基准路径,用于构建完整的请求 URL */
438
499
  this.baseUrl = '';
439
- /** 用户名 */
500
+ /** 用户名,用于日志记录和问题排查 */
440
501
  this.username = '';
441
- /** 错误处理函数 */
502
+ /** 错误处理函数,当请求失败时会被调用 */
442
503
  this.onErrorHandler = function (error) {
443
504
  console.error(error);
444
505
  };
506
+ /** 请求失败时的最大重试次数,默认 3 次 */
445
507
  this.maxRetryCount = 3;
446
- /** 超时时间 */
508
+ /** 普通请求的超时时间,单位毫秒,默认 10 秒 */
447
509
  this.timeout = 10000;
448
- /** 上传文件的超时时间 */
510
+ /** 上传文件的超时时间,单位毫秒,默认 5 秒 */
449
511
  this.uploadTimeout = 5000;
512
+ /** 下载文件的超时时间,单位毫秒,默认 30 秒 */
513
+ this.downloadTimeout = 30000;
514
+ /** 请求失败后的重试延迟时间,单位毫秒,默认 3 秒 */
450
515
  this.retryDelay = 3000;
516
+ /** 获取 token 的事件名称,默认为 'getToken' */
451
517
  this.tokenEventName = 'getToken';
452
- /** token的header名称,默认Authorization */
518
+ /** token 所在的请求头字段名称,默认为 'Authorization' */
453
519
  this.tokenHeader = 'Authorization';
454
- /** 传入的token前缀,默认Bearer ,注意Bearer有个空字符串*/
520
+ /** token 的前缀,默认为 'Bearer '(注意末尾有空格) */
455
521
  this.tokenPrefix = 'Bearer ';
456
522
  if (params) {
457
523
  Object.keys(params).forEach(function (key) {
@@ -461,6 +527,12 @@ var UniRequest = /*#__PURE__*/function () {
461
527
  });
462
528
  }
463
529
  }
530
+ /**
531
+ * 内部错误处理函数
532
+ * @description 触发 reject 并调用全局错误处理函数
533
+ * @param rej - Promise 的 reject 函数
534
+ * @param data - 错误数据
535
+ */
464
536
  _createClass(UniRequest, [{
465
537
  key: "rejectHandler",
466
538
  value: function rejectHandler(rej, data) {
@@ -468,6 +540,13 @@ var UniRequest = /*#__PURE__*/function () {
468
540
  rej(data);
469
541
  (_a = this.onErrorHandler) === null || _a === void 0 ? void 0 : _a.call(this, data);
470
542
  }
543
+ /**
544
+ * 动态设置配置参数
545
+ * @description 可以在实例创建后动态修改配置,用于变更超时时间、token、请求头等
546
+ * @param params - 要设置的参数,详见 IParams 接口
547
+ * @example
548
+ * uniRequest.setParams({ token: 'new_token', timeout: 15000 });
549
+ */
471
550
  }, {
472
551
  key: "setParams",
473
552
  value: function setParams(params) {
@@ -480,6 +559,15 @@ var UniRequest = /*#__PURE__*/function () {
480
559
  });
481
560
  }
482
561
  }
562
+ /**
563
+ * 底层通用请求方法
564
+ * @description 所有具体的请求方法(post、get 等)都调用此方法来执行请求。
565
+ * 支持自动重试、token 管理、请求头处理等高级功能
566
+ * @param params - 请求参数,包含 url、method、data、header、timeout 等
567
+ * @param callbackPromise - 回调函数,可以是 requestPromise、uploadFilePromise 或 downloadFilePromise
568
+ * @returns Promise<T> 返回解析后的响应数据
569
+ * @internal 此方法不建议直接调用,应使用 post、get、uploadFile 等高层方法
570
+ */
483
571
  }, {
484
572
  key: "request",
485
573
  value: function request(params) {
@@ -545,7 +633,10 @@ var UniRequest = /*#__PURE__*/function () {
545
633
  var statusCode = resData.statusCode,
546
634
  data = resData.data;
547
635
  if (statusCode === 200) {
548
- if (!data.errno) {
636
+ /** downloadFile 特殊处理:直接返回 tempFilePath */
637
+ if (callbackPromise === downloadFilePromise) {
638
+ res(resData.tempFilePath);
639
+ } else if (!data.errno) {
549
640
  var jsonData = data;
550
641
  /** 如果是上传API的话,返回的结果需要解析成json对象 */
551
642
  if (Object.prototype.toString.call(data) !== '[object Object]' && callbackPromise === uploadFilePromise) {
@@ -619,11 +710,14 @@ var UniRequest = /*#__PURE__*/function () {
619
710
  });
620
711
  }
621
712
  /**
622
- * post请求
623
- * @param url
624
- * @param data 可传可不传
625
- * @param header
626
- * @returns
713
+ * 发送 POST 请求
714
+ * @param url - 请求地址;支持相对路径(会拼接 baseUrl)和完整的 http/https 地址
715
+ * @param data - 请求数据,可选;如不传递则默认为空对象
716
+ * @param header - 当前请求的自定义请求头;会与实例级公共请求头合并
717
+ * @returns Promise<T> 返回解析后的响应数据
718
+ * @example
719
+ * const result = await uniRequest.post('/users', { name: 'John', age: 30 });
720
+ * const result = await uniRequest.post('https://api.example.com/users', data);
627
721
  */
628
722
  }, {
629
723
  key: "post",
@@ -637,6 +731,15 @@ var UniRequest = /*#__PURE__*/function () {
637
731
  method: 'POST'
638
732
  });
639
733
  }
734
+ /**
735
+ * 发送 GET 请求
736
+ * @param url - 请求地址;支持相对路径(会拼接 baseUrl)和完整的 http/https 地址
737
+ * @param data - 查询参数,可选;如不传递则默认为空对象
738
+ * @param header - 当前请求的自定义请求头;会与实例级公共请求头合并
739
+ * @returns Promise<T> 返回解析后的响应数据
740
+ * @example
741
+ * const result = await uniRequest.get('/users', { page: 1, limit: 10 });
742
+ */
640
743
  }, {
641
744
  key: "get",
642
745
  value: function get(url) {
@@ -649,6 +752,15 @@ var UniRequest = /*#__PURE__*/function () {
649
752
  method: 'GET'
650
753
  });
651
754
  }
755
+ /**
756
+ * 发送 DELETE 请求
757
+ * @param url - 请求地址;支持相对路径(会拼接 baseUrl)和完整的 http/https 地址
758
+ * @param data - 请求数据,可选;如不传递则默认为空对象
759
+ * @param header - 当前请求的自定义请求头;会与实例级公共请求头合并
760
+ * @returns Promise<T> 返回解析后的响应数据
761
+ * @example
762
+ * const result = await uniRequest.delete('/users/123');
763
+ */
652
764
  }, {
653
765
  key: "delete",
654
766
  value: function _delete(url) {
@@ -661,6 +773,15 @@ var UniRequest = /*#__PURE__*/function () {
661
773
  method: 'DELETE'
662
774
  });
663
775
  }
776
+ /**
777
+ * 发送 PUT 请求
778
+ * @param url - 请求地址;支持相对路径(会拼接 baseUrl)和完整的 http/https 地址
779
+ * @param data - 请求数据,可选;如不传递则默认为空对象
780
+ * @param header - 当前请求的自定义请求头;会与实例级公共请求头合并
781
+ * @returns Promise<T> 返回解析后的响应数据
782
+ * @example
783
+ * const result = await uniRequest.put('/users/123', { name: 'Jane', age: 25 });
784
+ */
664
785
  }, {
665
786
  key: "put",
666
787
  value: function put(url) {
@@ -675,13 +796,25 @@ var UniRequest = /*#__PURE__*/function () {
675
796
  }
676
797
  /**
677
798
  * 文件上传
678
- * @param url 上传接口地址;支持相对路径和完整的 http/https 地址
679
- * @param filePath 待上传文件的本地临时路径
680
- * @param formData 额外的表单字段,会与文件一起作为 multipart/form-data 提交
681
- * @param name 文件字段名;服务端通过该字段读取文件内容,默认值为 file
682
- * @param header 当前上传请求的自定义请求头;会与实例级公共请求头合并
683
- * @param onProgressUpdateCallback 上传进度回调;传入后会绑定到 uni.uploadFile 返回的 UploadTask.onProgressUpdate
684
- * @returns 返回一个 Promise;成功时解析服务端响应中的 data 字段,失败时抛出错误信息
799
+ * @param url - 上传接口地址;支持相对路径和完整的 http/https 地址
800
+ * @param filePath - 待上传文件的本地临时路径
801
+ * @param formData - 额外的表单字段,会与文件一起作为 multipart/form-data 提交
802
+ * @param name - 文件字段名;服务端通过该字段读取文件内容,默认值为 file
803
+ * @param header - 当前上传请求的自定义请求头;会与实例级公共请求头合并
804
+ * @param onProgressUpdateCallback - 上传进度回调;传入后会绑定到 uni.uploadFile 返回的 UploadTask.onProgressUpdate
805
+ * @returns Promise<T> 返回一个 Promise;成功时解析服务端响应中的 data 字段,失败时抛出错误信息
806
+ * @example
807
+ * const result = await uniRequest.uploadFile('/upload', filePath);
808
+ *
809
+ * // 带上传进度
810
+ * const result = await uniRequest.uploadFile(
811
+ * '/upload',
812
+ * filePath,
813
+ * { category: 'profile' },
814
+ * 'file',
815
+ * { 'Authorization': 'Bearer token' },
816
+ * (progress) => console.log(`上传进度: ${progress.progress}%`)
817
+ * );
685
818
  */
686
819
  }, {
687
820
  key: "uploadFile",
@@ -700,6 +833,37 @@ var UniRequest = /*#__PURE__*/function () {
700
833
  onProgressUpdateCallback: onProgressUpdateCallback
701
834
  }, uploadFilePromise);
702
835
  }
836
+ /**
837
+ * 文件下载
838
+ * @param url - 下载资源的 url;支持相对路径和完整的 http/https 地址
839
+ * @param filePath - 指定文件下载后存储的路径(本地路径),仅小程序端支持;如不指定则保存到临时目录
840
+ * @param header - 当前下载请求的自定义请求头;会与实例级公共请求头合并
841
+ * @param onProgressUpdateCallback - 下载进度回调;传入后会绑定到 uni.downloadFile 返回的 DownloadTask.onProgressUpdate
842
+ * @returns Promise<T> 返回一个 Promise;成功时解析得到的文件临时路径(tempFilePath),失败时抛出错误信息
843
+ * @example
844
+ * // 简单下载
845
+ * const filePath = await uniRequest.downloadFile('/files/document.pdf');
846
+ *
847
+ * // 带自定义保存路径和进度回调
848
+ * const filePath = await uniRequest.downloadFile(
849
+ * '/files/large-file.zip',
850
+ * 'local/storage/path',
851
+ * { 'Authorization': 'Bearer token' },
852
+ * (progress) => console.log(`下载进度: ${progress.progress}%`)
853
+ * );
854
+ */
855
+ }, {
856
+ key: "downloadFile",
857
+ value: function downloadFile(url, filePath, header, onProgressUpdateCallback) {
858
+ return this.request({
859
+ url: url,
860
+ filePath: filePath,
861
+ header: header,
862
+ method: 'GET',
863
+ timeout: this.downloadTimeout,
864
+ onProgressUpdateCallback: onProgressUpdateCallback
865
+ }, downloadFilePromise);
866
+ }
703
867
  }]);
704
868
  return UniRequest;
705
869
  }();