fix: complete October 22 workflow feedback and request failure recovery
This commit is contained in:
+12
-2
@@ -135,12 +135,22 @@ function rawUpload(path, filePath, name, token) {
|
||||
const request = new XMLHttpRequest()
|
||||
request.open('POST', url)
|
||||
request.setRequestHeader('Authorization', `Bearer ${token}`)
|
||||
request.timeout = 60000
|
||||
request.onload = () => resolve({ statusCode: request.status, data: request.responseText, header: {} })
|
||||
request.onerror = () => reject(new Error('海外作业文件上传失败'))
|
||||
request.ontimeout = () => reject(new Error('照片上传超时,请重试'))
|
||||
request.onabort = () => reject(new Error('照片上传已中断,请重试'))
|
||||
request.send(form)
|
||||
})
|
||||
const response = await fetch(url, { method: 'POST', headers: { Authorization: `Bearer ${token}` }, body: form })
|
||||
return { statusCode: response.status, data: await response.text(), header: Object.fromEntries(response.headers.entries()) }
|
||||
const controller = new AbortController()
|
||||
const timeout = setTimeout(() => controller.abort(), 60000)
|
||||
try {
|
||||
const response = await fetch(url, { method: 'POST', headers: { Authorization: `Bearer ${token}` }, body: form, signal: controller.signal })
|
||||
return { statusCode: response.status, data: await response.text(), header: Object.fromEntries(response.headers.entries()) }
|
||||
} catch (cause) {
|
||||
if (controller.signal.aborted) throw new Error('照片上传超时,请重试')
|
||||
throw cause
|
||||
} finally { clearTimeout(timeout) }
|
||||
})
|
||||
.catch((cause) => { throw Object.assign(new Error(cause.message || '海外作业文件上传失败'), { network: true, uploadUrl: url }) })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user