Browse Source

Fix #1525: Handle filebeforeload event abort when returning false (#1566)

Jérémy Munsch 5 years ago
parent
commit
7f200fbb89
1 changed files with 16 additions and 2 deletions
  1. 16 2
      js/fileinput.js

+ 16 - 2
js/fileinput.js

@@ -5062,7 +5062,7 @@
                     fnText = settings.text, fnImage = settings.image, fnHtml = settings.html, typ, chk, typ1, typ2,
                     fnText = settings.text, fnImage = settings.image, fnHtml = settings.html, typ, chk, typ1, typ2,
                     caption = self._getFileName(file, ''), fileSize = (file && file.size || 0) / 1000,
                     caption = self._getFileName(file, ''), fileSize = (file && file.size || 0) / 1000,
                     fileExtExpr = '', previewData = $h.createObjectURL(file), fileCount = 0,
                     fileExtExpr = '', previewData = $h.createObjectURL(file), fileCount = 0,
-                    strTypes = '', fileId, canLoad,
+                    strTypes = '', fileId, canLoad, fileReaderAborted = false,
                     func, knownTypes = 0, isText, isHtml, isImage, txtFlag, processFileLoaded = function () {
                     func, knownTypes = 0, isText, isHtml, isImage, txtFlag, processFileLoaded = function () {
                         var msg = msgProgress.setTokens({
                         var msg = msgProgress.setTokens({
                             'index': i + 1,
                             'index': i + 1,
@@ -5198,6 +5198,12 @@
                         };
                         };
                         newReader.onload = function (theFileNew) {
                         newReader.onload = function (theFileNew) {
                             if (self.isAjaxUpload && !self._raise('filebeforeload', [file, i, reader])) {
                             if (self.isAjaxUpload && !self._raise('filebeforeload', [file, i, reader])) {
+                                fileReaderAborted = true;
+                                self._resetCaption();
+                                reader.abort();
+                                $status.html('');
+                                $container.removeClass('file-thumb-loading');
+                                self.enable();
                                 return;
                                 return;
                             }
                             }
                             self._previewFile(i, file, theFileNew, previewData, fileInfo);
                             self._previewFile(i, file, theFileNew, previewData, fileInfo);
@@ -5239,6 +5245,12 @@
                         }
                         }
                     }
                     }
                     if (self.isAjaxUpload && !self._raise('filebeforeload', [file, i, reader])) {
                     if (self.isAjaxUpload && !self._raise('filebeforeload', [file, i, reader])) {
+                        fileReaderAborted = true;
+                        self._resetCaption();
+                        reader.abort();
+                        $status.html('');
+                        $container.removeClass('file-thumb-loading');
+                        self.enable();
                         return;
                         return;
                     }
                     }
                     self._previewFile(i, file, theFile, previewData, fileInfo);
                     self._previewFile(i, file, theFile, previewData, fileInfo);
@@ -5255,7 +5267,9 @@
                             'name': caption
                             'name': caption
                         });
                         });
                         setTimeout(function () {
                         setTimeout(function () {
-                            $status.html(msg);
+                            if (!fileReaderAborted) {
+                                $status.html(msg);
+                            }
                         }, self.processDelay);
                         }, self.processDelay);
                     }
                     }
                 };
                 };