diff --git a/packages/file-handling/src/fileupload.js b/packages/file-handling/src/fileupload.js index 22b2bfb3312012fe2be38a4cbf900720bd65ba2a..cce23f46799e8fd1f7fb8e2729d35960a2e7c2f0 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>