From f8881b374b361609c13d017f72a92ab68cafb0b1 Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Thu, 28 May 2020 11:36:16 +0200 Subject: [PATCH] Add extensions for known mime types for input[accept] --- packages/file-handling/src/fileupload.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/file-handling/src/fileupload.js b/packages/file-handling/src/fileupload.js index 22b2bfb3..cce23f46 100644 --- a/packages/file-handling/src/fileupload.js +++ b/packages/file-handling/src/fileupload.js @@ -8,6 +8,24 @@ import * as commonUtils from "vpu-common/utils"; import {Icon, MiniSpinner} from 'vpu-common'; import * as commonStyles from 'vpu-common/styles'; + +function mimeTypesToAccept(mimeTypes) { + // Some operating systems can't handle mime types and + // need file extensions, this tries to add them for some.. + let mapping = { + 'application/pdf': ['.pdf'], + }; + let accept = []; + mimeTypes.split(',').forEach((mime) => { + accept.push(mime); + if (mime.trim() in mapping) { + accept = accept.concat(mapping[mime.trim()]); + } + }); + return accept.join(','); +} + + /** * KnowledgeBaseWebPageElementView web component */ @@ -352,7 +370,7 @@ export class FileUpload extends ScopedElementsMixin(VPULitElement) { type="file" id="fileElem" multiple - accept="${this.allowedMimeTypes}" + accept="${mimeTypesToAccept(this.allowedMimeTypes)}" name='file'> <label class="button is-primary" for="fileElem" ?disabled="${this.disabled}"> <vpu-icon style="display: ${this.uploadInProgress ? "inline-block" : "none"}" name="lock"></vpu-icon> -- GitLab