mirror of
https://github.com/Mintplex-Labs/anything-llm.git
synced 2024-11-04 14:00:11 +01:00
27 lines
863 B
JavaScript
27 lines
863 B
JavaScript
|
async function fileUploadProgress(request, response, next) {
|
||
|
let progress = 0;
|
||
|
const fileSize = request.headers["content-length"]
|
||
|
? parseInt(request.headers["content-length"])
|
||
|
: 0;
|
||
|
|
||
|
// Note(tcarambat): While this is chunked it does not stream back to the UI for some reason.
|
||
|
// It just waits for the entire requests to finish. Likely because it is not using EventSource on frontend
|
||
|
// which is limited to GET.
|
||
|
// TODO: Someone smarter than me add streaming here to report back real-time progress.
|
||
|
response.writeHead(200);
|
||
|
request.on("data", (chunk) => {
|
||
|
progress += chunk.length;
|
||
|
const percentage = (progress / fileSize) * 100;
|
||
|
response.write(`${JSON.stringify({ progress, fileSize, percentage })}\n`);
|
||
|
if (progress >= fileSize) {
|
||
|
response.end();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
next();
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
fileUploadProgress,
|
||
|
};
|