diff --git a/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java b/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java index b0ea5085283d073e5215612e50949172db68e481..7597003e4e80ef71b629495084949777f45a0bd5 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java +++ b/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java @@ -302,6 +302,14 @@ public class FileUploadController extends FormBasicController { if(fileEl == source) { if(metaDataCtr != null) { String filename = fileEl.getUploadFileName(); + if(!FileUtils.validateFilename(filename)) { + String suffix = FileUtils.getFileSuffix(filename); + if(suffix != null && suffix.length() > 0) { + filename = filename.substring(0, filename.length() - suffix.length() - 1); + } + filename = FileUtils.normalizeFilename(filename) + "." + suffix; + metaDataCtr.getFilenameEl().setExampleKey("mf.filename.warning", null); + } metaDataCtr.setFilename(filename); } } diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_de.properties index 11c377813147cc714505b2c7f7bd2b76d4ffd4d8..ea72b9a004f2245d64a3018ee671f5af021a259b 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_de.properties @@ -14,6 +14,7 @@ mf.error.filename.exists=Ein Objekt mit gleichem Namen existiert bereits. mf.error.filename.invalidchars=Der Name des Objektes enth\u00E4lt ung\u00FCltige Zeichen. mf.file=Datei mf.filename=Dateiname +mf.filename.warning=<i class="o_icon o_icon_warn"> </i> Dieser Dateiname enth\u00E4lt unzul\u00E4ssige Zeichen und die wurden entfernt. mf.header=Metadaten Datei/Ordner mf.language=Sprache mf.lastModified=Datum letzte \u00C4nderung diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_en.properties index 8a20a599602914b64b10b6426a4ee91ae2c2fb86..aa2ac8587b1d46c7ca17b1660461a929d3f1a02d 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_en.properties @@ -14,6 +14,7 @@ mf.error.filename.exists=An object with that name already exists. mf.error.filename.invalidchars=The object's name contains invalid characters. mf.file=File mf.filename=File name +mf.filename.warning=<i class="o_icon o_icon_warn"> </i> This file name contains invalid characters and they were removed. mf.header=Metadata file/folder mf.language=Language mf.lastModified=Last modified\: diff --git a/src/main/java/org/olat/core/util/FileUtils.java b/src/main/java/org/olat/core/util/FileUtils.java index aae8b418a19a5e675f18cc0c0a33454c3600ad72..420739154cea3b2fbf4201fc932833e235b677c6 100644 --- a/src/main/java/org/olat/core/util/FileUtils.java +++ b/src/main/java/org/olat/core/util/FileUtils.java @@ -852,6 +852,8 @@ public class FileUtils { return nameSanitized; } + + /** * Creates a new directory in the specified directory, using the given prefix and suffix strings to generate its name. * It uses File.createTempFile() and should provide a unique name.