fix(file): add file validation and robust payload parsing for bucket upload and delete
deploy-chabokan / deploy (push) Canceled after 0s

This commit is contained in:
2026-08-19 04:35:42 +03:30
parent 2b94fdb034
commit 61c9012912
2 changed files with 26 additions and 5 deletions
+10 -1
View File
@@ -2,6 +2,12 @@ const catchAsync = require('../../globalErrorHandler/catchAsync')
const fileService = require('./fileService')
exports.bucketSingleUpload = catchAsync(async (req, res, next) => {
if (!req.file) {
return res.status(400).json({
status: 'fail',
message: 'No file uploaded'
})
}
const fileData = await fileService.bucketSingleUpload(req.file, req.params.bucketName)
res.status(200).json({
@@ -71,7 +77,10 @@ exports.getImage = catchAsync(async (req, res, next) => {
});
exports.bucketDeleteFile = catchAsync(async (req, res, next) => {
const { fileName } = await fileService.bucketDeleteFile(req.body, req.params.bucketName)
const rawTarget = typeof req.body === 'object' && req.body !== null
? (req.body.fileName || req.body.url || req.body.data || '')
: (req.body || '');
const { fileName } = await fileService.bucketDeleteFile(rawTarget, req.params.bucketName)
res.status(200).json({
status: 'success',
+16 -4
View File
@@ -52,14 +52,26 @@ const bucketMultiUpload = async (files, bucketName) => {
}
const bucketDeleteFile = async (fileName, bucketName) => {
let exportedFileName = getLastUrlSegment(fileName)
await deleteObject(exportedFileName, bucketName)
await deleteFile(exportedFileName)
let raw = typeof fileName === 'object' && fileName !== null
? (fileName.fileName || fileName.url || fileName.name || '')
: fileName
let exportedFileName = getLastUrlSegment(String(raw || ''))
if (exportedFileName) {
await deleteObject(exportedFileName, bucketName).catch((err) => {
console.error('Error deleting object from MinIO bucket:', err)
})
await deleteFile(exportedFileName).catch((err) => {
console.error('Error deleting file record from DB:', err)
})
}
return { fileName }
return { fileName: exportedFileName }
}
const getLastUrlSegment = (url) => {
if (!url || typeof url !== 'string') {
return ''
}
if (!url.includes('/')) {
return url
}