Skip to content

Commit 3c6574b

Browse files
committed
fix(attachments): Show proper error message at upload error
Fixes: #6269 Signed-off-by: Jonas <[email protected]>
1 parent f6800ba commit 3c6574b

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

lib/Controller/AttachmentController.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ public function uploadAttachment(string $token = ''): DataResponse {
135135
return new DataResponse(['error' => 'No uploaded file'], Http::STATUS_BAD_REQUEST);
136136
} catch (Exception $e) {
137137
$this->logger->error('Upload error', ['exception' => $e]);
138-
return new DataResponse(['error' => 'Upload error'], Http::STATUS_BAD_REQUEST);
138+
$error = $e->getMessage() ?: 'Upload error';
139+
return new DataResponse(['error' => $error], Http::STATUS_BAD_REQUEST);
139140
}
140141
}
141142

lib/Service/AttachmentService.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use OCP\Constants;
1717
use OCP\Files\File;
1818
use OCP\Files\Folder;
19+
use OCP\Files\IFilenameValidator;
1920
use OCP\Files\IMimeTypeDetector;
2021
use OCP\Files\InvalidPathException;
2122
use OCP\Files\IRootFolder;
@@ -35,7 +36,8 @@ public function __construct(private IRootFolder $rootFolder,
3536
private ShareManager $shareManager,
3637
private IPreview $previewManager,
3738
private IMimeTypeDetector $mimeTypeDetector,
38-
private IURLGenerator $urlGenerator) {
39+
private IURLGenerator $urlGenerator,
40+
private IFilenameValidator $filenameValidator) {
3941
}
4042

4143
/**
@@ -263,6 +265,7 @@ public function uploadAttachment(int $documentId, string $newFileName, $newFileR
263265
}
264266
$saveDir = $this->getAttachmentDirectoryForFile($textFile, true);
265267
$fileName = self::getUniqueFileName($saveDir, $newFileName);
268+
$this->filenameValidator->validateFilename($fileName);
266269
$savedFile = $saveDir->newFile($fileName, $newFileResource);
267270
return [
268271
'name' => $fileName,
@@ -293,6 +296,7 @@ public function uploadAttachmentPublic(?int $documentId, string $newFileName, $n
293296
$textFile = $this->getTextFilePublic($documentId, $shareToken);
294297
$saveDir = $this->getAttachmentDirectoryForFile($textFile, true);
295298
$fileName = self::getUniqueFileName($saveDir, $newFileName);
299+
$this->filenameValidator->validateFilename($fileName);
296300
$savedFile = $saveDir->newFile($fileName, $newFileResource);
297301
return [
298302
'name' => $fileName,

src/components/Editor/MediaHandler.vue

+5-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,11 @@ export default {
129129
})
130130
.catch((error) => {
131131
logger.error('Uploading attachment failed', { error })
132-
showError(t('text', 'Uploading attachment failed.'))
132+
if (error.response?.data.error) {
133+
showError(t('text', 'Uploading attachment failed: {error}', { error: error.response.data.error }))
134+
} else {
135+
showError(t('text', 'Uploading attachment failed.'))
136+
}
133137
})
134138
.then(() => {
135139
this.state.isUploadingAttachments = false

0 commit comments

Comments
 (0)