aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-09-10 18:11:23 -0400
committerbobzel <zzzman@gmail.com>2023-09-10 18:11:23 -0400
commit2e32ffaa398f077c5ddc81e950de010199c67c8d (patch)
tree837574deac74e08d03fc56884bac39e65a308571
parentb42680588ed48d57f497ff15a18a693bb7ecb9b8 (diff)
added progress for pdf uploads
-rw-r--r--src/client/Network.ts5
-rw-r--r--src/server/ApiManagers/UploadManager.ts10
-rw-r--r--src/server/DashUploadUtils.ts15
3 files changed, 13 insertions, 17 deletions
diff --git a/src/client/Network.ts b/src/client/Network.ts
index 631ec9122..e9f93fad3 100644
--- a/src/client/Network.ts
+++ b/src/client/Network.ts
@@ -58,11 +58,14 @@ export namespace Networking {
])
);
}
+ formData.set('fileguids', fileguidpairs.map(pair => pair.guid).join(';'));
// If the fileguidpair has a guid to use (From the overwriteDoc) use that guid. Otherwise, generate a new guid.
fileguidpairs.forEach(fileguidpair => formData.append(fileguidpair.guid ?? Utils.GenerateGuid(), fileguidpair.file));
} else {
// Handle the case where fileguidpairs is a single file.
- formData.append(fileguidpairs.guid ?? Utils.GenerateGuid(), fileguidpairs.file);
+ const guids = fileguidpairs.guid ?? Utils.GenerateGuid();
+ formData.set('fileguids', guids);
+ formData.append(guids, fileguidpairs.file);
}
const parameters = {
method: 'POST',
diff --git a/src/server/ApiManagers/UploadManager.ts b/src/server/ApiManagers/UploadManager.ts
index 854911277..4509425bb 100644
--- a/src/server/ApiManagers/UploadManager.ts
+++ b/src/server/ApiManagers/UploadManager.ts
@@ -64,13 +64,18 @@ export default class UploadManager extends ApiManager {
subscription: '/uploadFormData',
secureHandler: async ({ req, res }) => {
const form = new formidable.IncomingForm();
- console.log('RECEIVED form: ');
+ let fileguids = '';
+ form.on('field', (e: string, value: string) => {
+ if (e === 'fileguids') {
+ (fileguids = value).split(';').map(guid => DashUploadUtils.uploadProgress.set(guid, 'reading file'));
+ }
+ });
+ form.on('progress', e => fileguids.split(';').map(guid => DashUploadUtils.uploadProgress.set(guid, 'read: ' + e)));
form.keepExtensions = true;
form.uploadDir = pathToDirectory(Directory.parsed_files);
return new Promise<void>(resolve => {
form.parse(req, async (_err, _fields, files) => {
const results: Upload.FileResponse[] = [];
- console.log('Parsed files: ');
if (_err?.message) {
results.push({
source: {
@@ -86,7 +91,6 @@ export default class UploadManager extends ApiManager {
for (const key in files) {
const f = files[key];
if (!Array.isArray(f)) {
- console.log('uploading file...', f.name);
const result = await DashUploadUtils.upload(f, key); // key is the guid used by the client to track upload progress.
result && !(result.result instanceof Error) && results.push(result);
}
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts
index 5187d0d6f..15678bd8d 100644
--- a/src/server/DashUploadUtils.ts
+++ b/src/server/DashUploadUtils.ts
@@ -140,7 +140,7 @@ export namespace DashUploadUtils {
return uploadProgress.get(videoId) ?? 'pending data upload';
}
- let uploadProgress = new Map<string, string>();
+ export let uploadProgress = new Map<string, string>();
export function uploadYoutube(videoId: string, overwriteId: string): Promise<Upload.FileResponse> {
return new Promise<Upload.FileResponse<Upload.FileInformation>>((res, rej) => {
@@ -197,7 +197,6 @@ export namespace DashUploadUtils {
const isAzureOn = usingAzure();
const { type, path, name } = file;
const types = type?.split('/') ?? [];
- console.log('UPLOADING:' + (overwriteGuid ?? name));
uploadProgress.set(overwriteGuid ?? name, 'uploading'); // If the client sent a guid it uses to track upload progress, use that guid. Otherwise, use the file's name.
const category = types[0];
@@ -282,7 +281,6 @@ export namespace DashUploadUtils {
}
async function UploadPdf(file: File) {
- console.log('upload pdf', file.name);
const fileKey = (await md5File(file.path)) + '.pdf';
const textFilename = `${fileKey.substring(0, fileKey.length - 4)}.txt`;
if (fExists(fileKey, Directory.pdfs) && fExists(textFilename, Directory.text)) {
@@ -291,25 +289,16 @@ export namespace DashUploadUtils {
const textFilename = `${fileKey.substring(0, fileKey.length - 4)}.txt`;
const readStream = createReadStream(serverPathToFile(Directory.text, textFilename));
var rawText = '';
- console.log('reading stream', file);
- readStream
- .on('data', chunk => {
- console.log('Got chunk:' + chunk.size);
- rawText += chunk.toString();
- })
- .on('end', () => res(resolveExistingFile(file.name, fileKey, Directory.pdfs, file.type, undefined, rawText)));
+ readStream.on('data', chunk => (rawText += chunk.toString())).on('end', () => res(resolveExistingFile(file.name, fileKey, Directory.pdfs, file.type, undefined, rawText)));
});
}
const dataBuffer = readFileSync(file.path);
const result: ParsedPDF | any = await parse(dataBuffer).catch((e: any) => e);
if (!result.code) {
await new Promise<void>((resolve, reject) => {
- console.log('Got text write stream', file.name);
const writeStream = createWriteStream(serverPathToFile(Directory.text, textFilename));
writeStream.write(result?.text, error => (error ? reject(error) : resolve()));
- console.log('write text stream', file.name);
});
- console.log('moving', file.name);
return MoveParsedFile(file, Directory.pdfs, undefined, result?.text, undefined, fileKey);
}
return { source: file, result: { name: 'faile pdf pupload', message: `Could not upload (${file.name}).${result.message}` } };