From 47881d65f16a9caccfae7c9fdf910095c300b5b1 Mon Sep 17 00:00:00 2001 From: Aaron Ogle Date: Tue, 4 Apr 2017 15:34:02 -0500 Subject: [PATCH 1/2] If file is not an image / audio / video or larger then 10 mb don't try and show a preview --- .../client/lib/fileUpload.coffee | 73 ++++++++++++++----- 1 file changed, 55 insertions(+), 18 deletions(-) diff --git a/packages/rocketchat-ui/client/lib/fileUpload.coffee b/packages/rocketchat-ui/client/lib/fileUpload.coffee index 3eb4e7a448f8..707a52258834 100644 --- a/packages/rocketchat-ui/client/lib/fileUpload.coffee +++ b/packages/rocketchat-ui/client/lib/fileUpload.coffee @@ -5,6 +5,31 @@ readAsDataURL = (file, callback) -> reader.readAsDataURL file +getUploadPreview = (file, callback) -> + if file.file.type.indexOf('audio') > -1 or file.file.type.indexOf('video') > -1 or file.file.type.indexOf('image') > -1 + file.type = file.file.type.split('/')[0] + + readAsDataURL file.file, (content) -> + callback(file, content) + else + callback(file, null) + +formatBytes = (bytes, decimals) -> + if bytes == 0 + return '0 Bytes' + k = 1000 + dm = decimals + 1 or 3 + sizes = [ + 'Bytes' + 'KB' + 'MB' + 'GB' + 'TB' + 'PB' + ] + i = Math.floor(Math.log(bytes) / Math.log(k)) + parseFloat((bytes / k ** i).toFixed(dm)) + ' ' + sizes[i] + readAsArrayBuffer = (file, callback) -> reader = new FileReader() reader.onload = (ev) -> @@ -23,29 +48,29 @@ readAsArrayBuffer = (file, callback) -> swal.close() return - readAsDataURL file.file, (fileContent) -> - if not RocketChat.fileUploadIsValidContentType file.file.type - swal - title: t('FileUpload_MediaType_NotAccepted') - text: file.file.type || "*.#{s.strRightBack(file.file.name, '.')}" - type: 'error' - timer: 3000 - return - - if file.file.size is 0 - swal - title: t('FileUpload_File_Empty') - type: 'error' - timer: 1000 - return + if not RocketChat.fileUploadIsValidContentType file.file.type + swal + title: t('FileUpload_MediaType_NotAccepted') + text: file.file.type || "*.#{s.strRightBack(file.file.name, '.')}" + type: 'error' + timer: 3000 + return + + if file.file.size is 0 + swal + title: t('FileUpload_File_Empty') + type: 'error' + timer: 1000 + return + getUploadPreview file, (file, preview) -> text = '' if file.type is 'audio' text = """
@@ -58,7 +83,7 @@ readAsArrayBuffer = (file, callback) -> text = """
@@ -67,10 +92,22 @@ readAsArrayBuffer = (file, callback) -> """ + else if file.type is 'image' + text = """ +
+
+
+
+ + +
+ """ else + fileSize = formatBytes(file.file.size) + text = """
-
+
#{Handlebars._escape(file.name)} - #{fileSize}
From 9a8321c1ef6d610459910aeb27a71f233f8891de Mon Sep 17 00:00:00 2001 From: Aaron Ogle Date: Tue, 4 Apr 2017 16:15:57 -0500 Subject: [PATCH 2/2] Fix spacing --- .../client/lib/fileUpload.coffee | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/packages/rocketchat-ui/client/lib/fileUpload.coffee b/packages/rocketchat-ui/client/lib/fileUpload.coffee index 707a52258834..55507fe06189 100644 --- a/packages/rocketchat-ui/client/lib/fileUpload.coffee +++ b/packages/rocketchat-ui/client/lib/fileUpload.coffee @@ -6,29 +6,37 @@ readAsDataURL = (file, callback) -> reader.readAsDataURL file getUploadPreview = (file, callback) -> - if file.file.type.indexOf('audio') > -1 or file.file.type.indexOf('video') > -1 or file.file.type.indexOf('image') > -1 - file.type = file.file.type.split('/')[0] - - readAsDataURL file.file, (content) -> - callback(file, content) - else + # If greater then 10MB don't try and show a preview + if file.file.size > 10 * 1000000 callback(file, null) + else + if file.file.type.indexOf('audio') > -1 or file.file.type.indexOf('video') > -1 or file.file.type.indexOf('image') > -1 + file.type = file.file.type.split('/')[0] + + readAsDataURL file.file, (content) -> + callback(file, content) + else + callback(file, null) formatBytes = (bytes, decimals) -> - if bytes == 0 - return '0 Bytes' - k = 1000 - dm = decimals + 1 or 3 - sizes = [ - 'Bytes' - 'KB' - 'MB' - 'GB' - 'TB' - 'PB' - ] - i = Math.floor(Math.log(bytes) / Math.log(k)) - parseFloat((bytes / k ** i).toFixed(dm)) + ' ' + sizes[i] + if bytes == 0 + return '0 Bytes' + + k = 1000 + dm = decimals + 1 or 3 + + sizes = [ + 'Bytes' + 'KB' + 'MB' + 'GB' + 'TB' + 'PB' + ] + + i = Math.floor(Math.log(bytes) / Math.log(k)) + + parseFloat((bytes / k ** i).toFixed(dm)) + ' ' + sizes[i] readAsArrayBuffer = (file, callback) -> reader = new FileReader()