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.