fix: resolve Vue3Dropzone file wrapper access in SlideUploader

- Line 76: Add defensive guard to extract File from Vue3Dropzone wrapper {file: File, id: number}
- Line 79: Use actualFile.name for extension extraction (was file.name)
- Line 81: Use actualFile.name in error message (was file.name)
- Line 87: Append actualFile to FormData instead of wrapper (was file)

Vue3Dropzone v-model provides wrapped file objects, not raw File objects.
This fix ensures proper file access throughout the upload process.
This commit is contained in:
Thorsten Bus 2026-03-02 10:46:16 +01:00
parent 8dc26b8ae3
commit 3225e47fe7

View file

@ -73,17 +73,18 @@ function uploadNextFile(index) {
} }
const file = files.value[index] const file = files.value[index]
const actualFile = file.file || file // Handle Vue3Dropzone wrapper {file: File, id: number}
// Validate extension client-side // Validate extension client-side
const ext = '.' + file.name.split('.').pop().toLowerCase() const ext = '.' + actualFile.name.split('.').pop().toLowerCase()
if (!acceptedExtensions.includes(ext)) { if (!acceptedExtensions.includes(ext)) {
uploadError.value = `"${file.name}" — Dateityp nicht erlaubt. Nur PNG, JPG, PPT, PPTX und ZIP.` uploadError.value = `"${actualFile.name}" — Dateityp nicht erlaubt. Nur PNG, JPG, PPT, PPTX und ZIP.`
uploading.value = false uploading.value = false
return return
} }
const formData = new FormData() const formData = new FormData()
formData.append('file', file) formData.append('file', actualFile)
formData.append('type', props.type) formData.append('type', props.type)
if (props.serviceId) { if (props.serviceId) {