Как отправить большой rtf файл чтоб дождаться ответа от сервера (ошибка The user aborted a request)
При вставке из буфера текста (текст, таблицы, формУлы) в форму он отправляется на сервер для конвертации, а ответ долго приходит и вылезает ошибка The user aborted a request.
Если перетащить сам файл в форму, то все ок, ответ приходит и ошибки нет. Проблема именно при вставке из буфера.
Я подумал, что можно попробовать разделить очень большой rtf-файл на несколько и по частям отправлять на сервер.
Подскажите, пожалуйста, как правильно сделать. Мне кажется, должен быть не один вариант решения этой проблемы.
apiRoute.post<{ file?: { buffer: Buffer } }>(async (req, res) => {
if (!req.file) {
throw new BadRequest('Expected form with a field "file"')
}
let rtf = req.file.buffer.toString('utf8')
rtf = rtf.replace(/\{\\\*\\objclass\s+Equation\.3\}/g, `{\\*\\objclass Equation.2}`)
// Доходит до сюда, дальше не отрабатывает
const rtfAfterLibreResponse = await convertRtf(rtf, 'rtf')
const rtfAfterLibre = await rtfAfterLibreResponse.text()
const docxResponse = await convertRtf(rtfAfterLibre, 'docx')
const docx = await docxResponse.arrayBuffer()
const form = new FormData()
form.append('file', Buffer.from(docx), '1.docx')
const kxmlResponse = await fetchServer(`${process.env.TEXT_SERVER_URL}/docx/kxml`, {
method: 'POST',
body: form as any,
})
const kxml = await kxmlResponse.text()
res.setHeader('Content-Type', 'text/xml')
return res.send(kxml)
})