aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/DashUploadUtils.ts25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts
index b1a7a9c5e..307aec6fc 100644
--- a/src/server/DashUploadUtils.ts
+++ b/src/server/DashUploadUtils.ts
@@ -14,7 +14,7 @@ import * as path from 'path';
import { basename } from 'path';
import * as parse from 'pdf-parse';
import * as request from 'request-promise';
-import { Duplex } from 'stream';
+import { Duplex, Stream } from 'stream';
import { filesDirectory, publicDirectory } from '.';
import { Utils } from '../Utils';
import { Opt } from '../fields/Doc';
@@ -349,10 +349,8 @@ export namespace DashUploadUtils {
if (metadata instanceof Error) {
return { name: metadata.name, message: metadata.message };
}
- const outputFile = filename || metadata.filename;
- if (!outputFile) {
- return { name: source, message: 'output file not found' };
- }
+ const outputFile = filename || metadata.filename || '';
+
return UploadInspectedImage(metadata, outputFile, prefix);
};
@@ -552,7 +550,22 @@ export namespace DashUploadUtils {
writtenFiles = {};
}
} else {
- writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images));
+ try {
+ writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images));
+ } catch (e) {
+ // input is a blob or other, try reading it to create a metadata source file.
+ const reqSource = request(metadata.source);
+ let readStream: Stream = reqSource instanceof Promise ? await reqSource : reqSource;
+ const readSource = `${prefix}upload_${Utils.GenerateGuid()}.${metadata.contentType.split('/')[1].toLowerCase()}`;
+ await new Promise<void>((res, rej) =>
+ readStream
+ .pipe(createWriteStream(readSource))
+ .on('close', () => res())
+ .on('error', () => rej())
+ );
+ writtenFiles = await outputResizedImages(readSource, resolved, pathToDirectory(Directory.images));
+ fs.unlink(readSource, err => console.log("Couldn't unlink temporary image file:" + readSource));
+ }
}
for (const suffix of Object.keys(writtenFiles)) {
information.accessPaths[suffix] = getAccessPaths(images, writtenFiles[suffix]);