From 9b7464a894959ea01c65a6eecd265b7aaa283f95 Mon Sep 17 00:00:00 2001 From: Ilya Oleshko Date: Tue, 31 Aug 2021 17:35:46 +0300 Subject: [PATCH 1/4] Web: Client: Files: UploadDataStore: Fixed upload chunk value, now it get from settings --- .../Client/src/store/UploadDataStore.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/products/ASC.Files/Client/src/store/UploadDataStore.js b/products/ASC.Files/Client/src/store/UploadDataStore.js index af635ede75..8518de47cf 100644 --- a/products/ASC.Files/Client/src/store/UploadDataStore.js +++ b/products/ASC.Files/Client/src/store/UploadDataStore.js @@ -513,7 +513,9 @@ class UploadDataStore { const { uploaded } = res.data.data; - const uploadedSize = uploaded ? fileSize : index * chunkSize; + const uploadedSize = uploaded + ? fileSize + : index * this.settingsStore.chunkUploadSize; const newPercent = this.getNewPercent(uploadedSize, indexOfFile); @@ -627,7 +629,10 @@ class UploadDataStore { } const { file, toFolderId /*, action*/ } = item; - const chunks = Math.ceil(file.size / chunkSize, chunkSize); + const chunks = Math.ceil( + file.size / this.settingsStore.chunkUploadSize, + this.settingsStore.chunkUploadSize + ); const fileName = file.name; const fileSize = file.size; const relativePath = file.path @@ -651,9 +656,12 @@ class UploadDataStore { let chunk = 0; while (chunk < chunks) { - const offset = chunk * chunkSize; + const offset = chunk * this.settingsStore.chunkUploadSize; const formData = new FormData(); - formData.append("file", file.slice(offset, offset + chunkSize)); + formData.append( + "file", + file.slice(offset, offset + this.settingsStore.chunkUploadSize) + ); requestsDataArray.push(formData); chunk++; } From fce956991ed1a9eef720f407ec97bbecc7a0ad51 Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Tue, 31 Aug 2021 18:38:59 +0300 Subject: [PATCH 2/4] nginx: fix --- config/nginx/onlyoffice.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/nginx/onlyoffice.conf b/config/nginx/onlyoffice.conf index b80db1200a..5a8fdc69b9 100644 --- a/config/nginx/onlyoffice.conf +++ b/config/nginx/onlyoffice.conf @@ -38,7 +38,7 @@ server { etag on; large_client_header_buffers 4 16k; - + client_max_body_size 4G; set $X_REWRITER_URL $the_scheme://$the_host; if ($http_x_rewriter_url != '') { From 7b4cb77321b496b74f95d1f2a7d653d12f4997aa Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Wed, 1 Sep 2021 14:37:42 +0300 Subject: [PATCH 3/4] fix 52181 --- .../Core/Core/Dao/TeamlabDao/FolderDao.cs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs b/products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs index ad17332165..ce5ff2cdc4 100644 --- a/products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs +++ b/products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs @@ -322,8 +322,8 @@ namespace ASC.Files.Core.Data if (folder.FolderType == FolderType.DEFAULT || folder.FolderType == FolderType.BUNCH) { - FactoryIndexer.IndexAsync(toUpdate); - } + FactoryIndexer.IndexAsync(toUpdate); + } } else { @@ -345,7 +345,7 @@ namespace ASC.Files.Core.Data FilesDbContext.SaveChanges(); if (folder.FolderType == FolderType.DEFAULT || folder.FolderType == FolderType.BUNCH) { - FactoryIndexer.IndexAsync(newFolder); + FactoryIndexer.IndexAsync(newFolder); } folder.ID = newFolder.Id; @@ -703,10 +703,7 @@ namespace ASC.Files.Core.Data private int GetFoldersCount(int parentId) { var count = FilesDbContext.Tree - .AsNoTracking() - .Where(r => r.ParentId == parentId) - .Where(r => r.Level > 0) - .Count(); + .Count(r => r.ParentId == parentId && r.Level > 0); return count; } @@ -714,9 +711,8 @@ namespace ASC.Files.Core.Data private int GetFilesCount(int folderId) { var count = Query(FilesDbContext.Files) - .AsNoTracking() .Distinct() - .Count(r => FilesDbContext.Tree.Where(r => r.ParentId == folderId).Select(r => r.FolderId).Contains(r.FolderId)); + .Count(r => FilesDbContext.Tree.Any(t => t.ParentId == folderId && t.FolderId == r.FolderId)); return count; } @@ -764,9 +760,9 @@ namespace ASC.Files.Core.Data private void RecalculateFoldersCount(int id) { var toUpdate = Query(FilesDbContext.Folders) - .Join(FilesDbContext.Tree, r=> r.Id, r=> r.ParentId,(file, tree) => new { file, tree }) + .Join(FilesDbContext.Tree, r => r.Id, r => r.ParentId, (file, tree) => new { file, tree }) .Where(r => r.tree.FolderId == id) - .Select(r=> r.file) + .Select(r => r.file) .ToList(); foreach (var f in toUpdate) From de373f09fa3b621a39c974f00080831998c83eec Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Wed, 1 Sep 2021 14:50:46 +0300 Subject: [PATCH 4/4] Web: Files: added default chunkUploadSize --- .../ASC.Files/Client/src/store/SettingsStore.js | 1 + .../Client/src/store/UploadDataStore.js | 16 +++++----------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/products/ASC.Files/Client/src/store/SettingsStore.js b/products/ASC.Files/Client/src/store/SettingsStore.js index 3c2fb71c87..ca73b1e763 100644 --- a/products/ASC.Files/Client/src/store/SettingsStore.js +++ b/products/ASC.Files/Client/src/store/SettingsStore.js @@ -23,6 +23,7 @@ class SettingsStore { favoritesSection = null; recentSection = null; hideConfirmConvertSave = null; + chunkUploadSize = 1024 * 1023; // 1024 * 1023; //~0.999mb settingsIsLoaded = false; diff --git a/products/ASC.Files/Client/src/store/UploadDataStore.js b/products/ASC.Files/Client/src/store/UploadDataStore.js index 8518de47cf..9146f66cdc 100644 --- a/products/ASC.Files/Client/src/store/UploadDataStore.js +++ b/products/ASC.Files/Client/src/store/UploadDataStore.js @@ -18,8 +18,6 @@ import { moveToFolder, } from "@appserver/common/api/files"; -const chunkSize = 1024 * 1023; //~0.999mb - class UploadDataStore { formatsStore; treeFoldersStore; @@ -628,11 +626,10 @@ class UploadDataStore { return Promise.resolve(); } + const { chunkUploadSize } = this.settingsStore; + const { file, toFolderId /*, action*/ } = item; - const chunks = Math.ceil( - file.size / this.settingsStore.chunkUploadSize, - this.settingsStore.chunkUploadSize - ); + const chunks = Math.ceil(file.size / chunkUploadSize, chunkUploadSize); const fileName = file.name; const fileSize = file.size; const relativePath = file.path @@ -656,12 +653,9 @@ class UploadDataStore { let chunk = 0; while (chunk < chunks) { - const offset = chunk * this.settingsStore.chunkUploadSize; + const offset = chunk * chunkUploadSize; const formData = new FormData(); - formData.append( - "file", - file.slice(offset, offset + this.settingsStore.chunkUploadSize) - ); + formData.append("file", file.slice(offset, offset + chunkUploadSize)); requestsDataArray.push(formData); chunk++; }