diff --git a/apps/files/src/services/DropService.ts b/apps/files/src/services/DropService.ts index d1e8dd9ed5a50..e97c859445fa0 100644 --- a/apps/files/src/services/DropService.ts +++ b/apps/files/src/services/DropService.ts @@ -29,9 +29,12 @@ import { getUploader } from '@nextcloud/upload' import { joinPaths } from '@nextcloud/paths' import { showError } from '@nextcloud/dialogs' import { translate as t } from '@nextcloud/l10n' +import { loadState } from '@nextcloud/initial-state' import logger from '../logger.js' +const forbiddenCharacters = loadState('files', 'forbiddenCharacters', '') as string + export const handleDrop = async (data: DataTransfer): Promise => { // TODO: Maybe handle `getAsFileSystemHandle()` in the future @@ -67,11 +70,18 @@ export const handleDrop = async (data: DataTransfer): Promise => { const handleFileUpload = async (file: File, path: string = '') => { const uploader = getUploader() - try { - return await uploader.upload(`${path}${file.name}`, file) - } catch (e) { - showError(t('files', 'Uploading "{filename}" failed', { filename: file.name })) - throw e + const forbidden = forbiddenCharacters.split('') + let forbiddenChar + + if(forbiddenChar = forbidden.find(char => file.name.includes(char))){ + showError(t('files', `"${forbiddenChar}" is not allowed inside a file name.`)); + }else{ + try { + return await uploader.upload(`${path}${file.name}`, file) + } catch (e) { + showError(t('files', 'Uploading "{filename}" failed', { filename: file.name })) + throw e + } } } diff --git a/apps/files/src/views/FilesList.vue b/apps/files/src/views/FilesList.vue index 19e9b8e86d286..1173c4eadbf8b 100644 --- a/apps/files/src/views/FilesList.vue +++ b/apps/files/src/views/FilesList.vue @@ -54,6 +54,7 @@