Răsfoiți Sursa

refs GW-321: refacter
- fix all uploader

Otani Haruhiko 6 ani în urmă
părinte
comite
c0d96eadc6

+ 2 - 1
src/server/service/file-uploader/aws.js

@@ -133,7 +133,8 @@ module.exports = function(crowi) {
    */
   lib.checkLimit = async(uploadFileSize) => {
     const maxFileSize = crowi.configManager.getConfig('crowi', 'app:maxFileSize');
-    return { isUploadable: uploadFileSize <= maxFileSize, errorMessage: 'File size exceeds the size limit per file' };
+    const totalLimit = crowi.configManager.getConfig('crowi', 'app:fileUploadTotalLimit');
+    return lib.doCheckLimit(uploadFileSize, maxFileSize, totalLimit);
   };
 
   return lib;

+ 15 - 31
src/server/service/file-uploader/gridfs.js

@@ -46,20 +46,20 @@ module.exports = function(crowi) {
   /**
    * get size of data uploaded files using (Promise wrapper)
    */
-  const getCollectionSize = () => {
-    return new Promise((resolve, reject) => {
-      chunkCollection.stats((err, data) => {
-        if (err) {
-          // return 0 if not exist
-          if (err.errmsg.includes('not found')) {
-            return resolve(0);
-          }
-          return reject(err);
-        }
-        return resolve(data.size);
-      });
-    });
-  };
+  // const getCollectionSize = () => {
+  //   return new Promise((resolve, reject) => {
+  //     chunkCollection.stats((err, data) => {
+  //       if (err) {
+  //         // return 0 if not exist
+  //         if (err.errmsg.includes('not found')) {
+  //           return resolve(0);
+  //         }
+  //         return reject(err);
+  //       }
+  //       return resolve(data.size);
+  //     });
+  //   });
+  // };
 
   /**
    * check the file size limit
@@ -70,27 +70,11 @@ module.exports = function(crowi) {
    */
   lib.checkLimit = async(uploadFileSize) => {
     const maxFileSize = crowi.configManager.getConfig('crowi', 'app:maxFileSize');
-    if (uploadFileSize > maxFileSize) {
-      return { isUploadable: false, errorMessage: 'File size exceeds the size limit per file' };
-    }
-
-    let usingFilesSize;
-    try {
-      usingFilesSize = await getCollectionSize();
-    }
-    catch (err) {
-      logger.error(err);
-      return { isUploadable: false, errorMessage: err.errmsg };
-    }
 
     // Use app:fileUploadTotalLimit if gridfs:totalLimit is null (default for gridfs:totalLimitd is null)
     const gridfsTotalLimit = crowi.configManager.getConfig('crowi', 'gridfs:totalLimit')
       || crowi.configManager.getConfig('crowi', 'app:fileUploadTotalLimit');
-    if (usingFilesSize + uploadFileSize > gridfsTotalLimit) {
-      return { isUploadable: false, errorMessage: 'MongoDB for uploading files reaches limit' };
-    }
-
-    return { isUploadable: true };
+    return lib.doCheckLimit(uploadFileSize, maxFileSize, gridfsTotalLimit);
   };
 
   lib.uploadFile = async function(fileStream, attachment) {

+ 2 - 1
src/server/service/file-uploader/local.js

@@ -88,7 +88,8 @@ module.exports = function(crowi) {
    */
   lib.checkLimit = async(uploadFileSize) => {
     const maxFileSize = crowi.configManager.getConfig('crowi', 'app:maxFileSize');
-    return { isUploadable: uploadFileSize <= maxFileSize, errorMessage: 'File size exceeds the size limit per file' };
+    const totalLimit = crowi.configManager.getConfig('crowi', 'app:fileUploadTotalLimit');
+    return lib.doCheckLimit(uploadFileSize, maxFileSize, totalLimit);
   };
 
   return lib;