From 10633fc246a44620f8ab982f8e3ae6a9d58aaf61 Mon Sep 17 00:00:00 2001 From: Patrizio Bekerle <patrizio@bekerle.com> Date: Mon, 23 Mar 2020 08:11:13 +0100 Subject: [PATCH] Prevent duplicate file names in ZIP file (VPU/Middleware/API#40) --- src/utils.js | 11 +++++++++++ src/vpu-signature-pdf-upload.js | 13 ++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/utils.js b/src/utils.js index f6ecedb..9542c6c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -44,3 +44,14 @@ export const getDataURIContentType = (dataURI) => { return dataURI.substring(5, base64Index); }; + +export const baseName = (str) => +{ + let base = String(str).substring(str.lastIndexOf('/') + 1); + + if(base.lastIndexOf(".") !== -1) { + base = base.substring(0, base.lastIndexOf(".")); + } + + return base; +}; diff --git a/src/vpu-signature-pdf-upload.js b/src/vpu-signature-pdf-upload.js index f538449..133a55a 100644 --- a/src/vpu-signature-pdf-upload.js +++ b/src/vpu-signature-pdf-upload.js @@ -102,12 +102,19 @@ class SignaturePdfUpload extends VPUSignatureLitElement { // see: https://stuk.github.io/jszip/ let zip = new JSZip(); const that = this; + let fileNames = []; // add all signed pdf files this.files.forEach((file) => { - console.log(file); - // TODO: check for duplicate file names - zip.file(file.fileName, utils.getPDFFileBase64Content(file), {base64: true}); + let fileName = file.fileName; + + // + if (fileNames.indexOf(fileName) !== -1) { + fileName = utils.baseName(fileName) + "-" + Math.random().toString(36).substring(7) + ".pdf"; + } + + fileNames.push(fileName); + zip.file(fileName, utils.getPDFFileBase64Content(file), {base64: true}); }); zip.generateAsync({type:"blob"}) -- GitLab