Browse Source

Fix #633: New property `maxFilePreviewSize` to control preview of large size files

Kartik Visweswaran 9 năm trước cách đây
mục cha
commit
51ddb7ca6a
3 tập tin đã thay đổi với 14 bổ sung4 xóa
  1. 1 0
      CHANGE.md
  2. 13 4
      js/fileinput.js
  3. 0 0
      js/fileinput.min.js

+ 1 - 0
CHANGE.md

@@ -12,6 +12,7 @@ Change Log: `bootstrap-fileinput`
 5. (enh #615): Correct Finnish Localizations.
 6. (enh #618): Update German Translations.
 7. (enh #632): Find correct filename in IE9.
+8. (enh #633): New property `maxFilePreviewSize` to control preview of large size files.
 
 ## version 4.3.1
 

+ 13 - 4
js/fileinput.js

@@ -1727,6 +1727,8 @@
                 $container = self.$previewContainer, $status = self.$previewStatus, msgLoading = self.msgLoading,
                 msgProgress = self.msgProgress, previewInitId = self.previewInitId, numFiles = files.length,
                 settings = self.fileTypeSettings, ctr = self.filestack.length, readFile,
+                maxPreviewSize = self.maxFilePreviewSize && parseFloat(self.maxFilePreviewSize),
+                canPreview = $preview.length && (!maxPreviewSize || isNaN(maxPreviewSize)),
                 throwError = function (msg, file, previewId, index) {
                     var p1 = $.extend(true, {}, self._getOutData({}, {}, files), {id: previewId, index: index}),
                         p2 = {id: previewId, index: index, file: file, files: files};
@@ -1751,7 +1753,6 @@
                     self.totalImagesCount++;
                 }
             });
-
             readFile = function (i) {
                 if (isEmpty($el.attr('multiple'))) {
                     numFiles = 1;
@@ -1811,7 +1812,15 @@
                     self._raise('fileloaded', [file, previewId, i, reader]);
                     return;
                 }
-                if ($preview.length > 0 && FileReader !== undefined) {
+                if (!canPreview && fileSize > maxPreviewSize) {
+                    $container.addClass('file-thumb-loading');
+                    self._previewDefault(file, previewId);
+                    self._initFileActions();
+                    self._updateFileDetails(numFiles);
+                    readFile(i + 1);
+                    return;
+                }
+                if ($preview.length && FileReader !== undefined) {
                     $status.html(msgLoading.replace('{index}', i + 1).replace('{files}', numFiles));
                     $container.addClass('file-thumb-loading');
                     reader.onerror = function (evt) {
@@ -1822,8 +1831,7 @@
                         self._initFileActions();
                     };
                     reader.onloadend = function () {
-                        msg = msgProgress
-                            .replace('{index}', i + 1).replace('{files}', numFiles)
+                        msg = msgProgress.replace('{index}', i + 1).replace('{files}', numFiles)
                             .replace('{percent}', 50).replace('{name}', caption);
                         setTimeout(function () {
                             $status.html(msg);
@@ -2692,6 +2700,7 @@
         resizeQuality: 0.92,
         resizeDefaultImageType: 'image/jpeg',
         maxFileSize: 0,
+        maxFilePreviewSize: 25600, // 25 MB
         minFileCount: 0,
         maxFileCount: 0,
         validateInitialCount: false,

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
js/fileinput.min.js


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác