fix(file): add file validation and robust payload parsing for bucket upload and delete
deploy-chabokan / deploy (push) Canceled after 0s
deploy-chabokan / deploy (push) Canceled after 0s
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user