【发布时间】:2020-08-17 18:41:48
【问题描述】:
我有一些上传文件的代码,我正在寻找一种方法来接收进度百分比,以便将其输入进度条。我尝试了 ProgressEventInit 和 ProgressEvent,但我没有得到我需要的东西。有人有想法么。下面是代码:
function objToQuery(obj: {[key: string]: any}) {
if (R.isEmpty(obj)) {
return '';
}
return `?${R.toPairs(obj).map(kvPair => kvPair.join('=')).join('&')}`;
}
export default async function request<T>(url: string, options: RequestInit) {
const response = await window.fetch(url, { credentials: 'include', ...options });
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const json = (await parseJSON<T>(response))!;
return checkStatus(response, json);
}
export async function postFiles<T>(url: string, postForm: FormData, queryData: {} = {}) {
const headers: HeadersInit = {
Accept: 'application/json',
};
return request<T>(`${apiRoot}/${url}${objToQuery(queryData)}`, {
headers,
method: 'POST',
body: postForm,
});
}
【问题讨论】:
-
您正在使用 fetch。 fetch api 尚不支持此功能。您可以重构您的代码以使用 xhr,如下面的答案所示。
标签: javascript node.js reactjs typescript