miniprogram-uploader
Version:
miniprogram upload package
47 lines (42 loc) • 1.43 kB
text/typescript
import { buildParams, getCommonOptions, Omit } from 'miniprogram-network-utils';
import { UploaderResponse, UploadOption, wx } from './uploader';
/**
* 微信请求参数 (不包含回调函数)
*/
export type UploadParams = Omit<wx.UploadFileOption, 'success' | 'fail' | 'complete'>;
/**
* 构建请求参数
* baseUrl和dataUrl不同时为空
* @param data - 完整参数
*/
export function transformUploadSendDefault(data: UploadOption): UploadParams {
return getCommonOptions<Partial<UploadParams>>(
{
url: buildParams(data.url || '', data.params, data.baseURL),
formData: data.data,
header: data.headers
},
data,
['filePath', 'name']) as UploadParams;
}
/**
* 根据错误码处理数据(会尝试JSON.parse)
* statusCode 2xx 操作成功仅返回data数据
* 否则抛出错误(rejected)
* @param res - 返回结果
* @param options - 全部配置
* @returns 反序列化对象
*/
export function transformUploadResponseOkData<T = any>(res: UploaderResponse, options: UploadOption): T {
if (res.statusCode >= 200 && res.statusCode < 300) {
if (typeof res.data === 'string') {
try {
return JSON.parse(res.data) as T;
} catch {
// empty
}
}
return res.data as any as T;
}
throw res;
}