Verbesserung
Top-Thema
Wichtig
Kleinigkeit
Wichtig
Detail
#24715
Umgang mit großen Dateimengen bei Uploads durch file drops
Derzeit überprüft der FileDropHandler und auch das GalleryControl nicht die Menge oder Größe von Dateien, die hochgeladen werden sollen. Das führt unter Umständen zu einem Overhead und der Upload kann nicht korrekt durchgeführt werden. Daher soll die maximale Uploadgröße begrenzt werden können.
Verbesserung
Sowohl in der WebFolderComponent als auch in der WebFolderUIFactory kann nun die max-upload-size konfiguriert werden. Die Größe wird dabei als MemorySizeFormat angegeben. Falls die WebFolderComponent keine entsprechende Konfiguration hat, nutzt sie die der WebFolderUIFactory, welche per default auf unlimited steht. \\ Für unbegrenzten Upload muss 0 eingegeben werden. Das GalleryControl besitzt bereits eine Konfiguration für maximale Uploads (MAX_DATABASE_SIZE_MEGABYTE in der ImageSizeConfig) und nutzt diese nun auch für file drop Uploads. \\ Zusätzlich wird auch clientseitig schon überprüft, ob die maximale Größe überschritten wurde. Bei einem Fehler wird dieser als Message mit der maximalen Uploadgröße an den Server zurückgesendet, sodass dieser eine entsprechende Fehlermeldung generieren kann.
Anwendung
Die WebFolderUIFactory und die WebFolderComponent werden wie folgt konfiguriert: {{{#!xml <config service-class="com.top_logic.common.webfolder.ui.WebFolderUIFactory">
<instance max-upload-size="0" />
</config> }}}
{{{#!xml <config config:interface="com.top_logic.common.webfolder.ui.WebFolderComponent$Config
"max-upload-size="1024"
/> }}}
Test
Unter Strukturen > A > Typendemo im WebFolder einen Upload per drag and drop starten. Bei einer Uploadmenge von über 5 MB muss eine Fehlermeldung erscheinen und es darf nichts hochgeladen werden. Dasselbe gilt für den WebFolder unter Strukturen > A > Dokumente und GalleryControl.
Code Migration
- FileDropHandler implementiert jetzt zusätzlich die Funktion getMaxUploadSize
- Der Konstruktor vom FolderFileDropHandler erhält nun zusätzlich noch eine maxSize für die maximale Größe an Daten, die hochgeladen werden kann:
FolderFileDropHandler(boolean manualLocking, boolean uploadPossible, long maxSize)