diff --git a/src/js/fileHandler.js b/src/js/fileHandler.js index 48e0508..cc9f02a 100644 --- a/src/js/fileHandler.js +++ b/src/js/fileHandler.js @@ -27,6 +27,7 @@ export default class FileHandler { confirmTransfer(event) { const validFileTypes = ['png','jpg','jpeg','gif','zip','rar','gzip','pdf','txt','json','doc','docx']; const file = event.target.files && event.target.files[0]; + const fileName = this.sanitizeFileName(file.name); if (file) { const fileExt = file.name.split('.').pop().toLowerCase(); @@ -38,16 +39,16 @@ export default class FileHandler { // Support for only 1MB if (file.size > 1000000) { - console.log(file); alert('Max filesize is 1MB.'); return false; } let fileId = uuid.v4(); - let confirmMessage = 'You are about to send ' + file.name + ' to all participants in this chat. Confirm | Cancel'; + let confirmMessage = 'You are about to send ' + fileName + ' to all participants in this chat. Confirm | Cancel'; let fileData = { id: fileId, - file: file + file: file, + fileName: fileName }; this.localFileQueue.push(fileData); this.chat.addChatMessage({ @@ -78,10 +79,10 @@ export default class FileHandler { const base64 = window.btoa(readerEvent.target.result); const additionalData = { fileId: fileId, - fileName: file.name + fileName: this.sanitizeFileName(file.name) }; this.darkwire.encodeMessage(base64, fileType, additionalData).then((socketData) => { - this.chat.replaceMessage('#transfer-' + fileId, 'Sent ' + file.name + ''); + this.chat.replaceMessage('#transfer-' + fileId, 'Sent ' + additionalData.fileName + ''); this.socket.emit('new message', socketData); }); this.resetInput(); @@ -94,7 +95,7 @@ export default class FileHandler { const file = _.findWhere(this.localFileQueue, {id: fileId}); this.localFileQueue = _.without(this.localFileQueue, file); this.resetInput(); - return this.chat.replaceMessage('#transfer-' + fileId, 'The file transfer for ' + file.file.name + ' has been canceled.'); + return this.chat.replaceMessage('#transfer-' + fileId, 'The file transfer for ' + file.fileName + ' has been canceled.'); } createBlob(base64, fileType) { @@ -125,6 +126,10 @@ export default class FileHandler { return window.URL.createObjectURL(blob); } + sanitizeFileName(str) { + return str.replace(/[<>]/ig, ''); + } + listen() { // browser API document.getElementById('fileInput').addEventListener('change', this.confirmTransfer.bind(this), false);