updates
This commit is contained in:
parent
c6b4c716a8
commit
9af9977749
|
|
@ -754,6 +754,7 @@ const deleteFile = async () => {
|
|||
body: {
|
||||
fileName: fileToDelete.value.name,
|
||||
isFolder: fileToDelete.value.isFolder,
|
||||
bucket: fileToDelete.value.bucket || 'client-portal',
|
||||
},
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import { deleteFile, deleteFolder } from '~/server/utils/minio';
|
||||
import { deleteFile, deleteFolder, getMinioClient } from '~/server/utils/minio';
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const body = await readBody(event);
|
||||
const { fileName, isFolder } = body;
|
||||
const { fileName, isFolder, bucket } = body;
|
||||
const targetBucket = bucket || 'client-portal';
|
||||
|
||||
if (!fileName) {
|
||||
throw createError({
|
||||
|
|
@ -21,10 +22,47 @@ export default defineEventHandler(async (event) => {
|
|||
}
|
||||
|
||||
// Delete folder or file based on type
|
||||
if (isFolder) {
|
||||
await deleteFolder(fileName);
|
||||
if (targetBucket === 'client-portal') {
|
||||
// Use existing functions for default bucket
|
||||
if (isFolder) {
|
||||
await deleteFolder(fileName);
|
||||
} else {
|
||||
await deleteFile(fileName);
|
||||
}
|
||||
} else {
|
||||
await deleteFile(fileName);
|
||||
// For other buckets, use MinIO client directly
|
||||
const client = getMinioClient();
|
||||
|
||||
if (isFolder) {
|
||||
// List all objects in the folder and delete them
|
||||
const objectsList: string[] = [];
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
const stream = client.listObjectsV2(targetBucket, fileName, true);
|
||||
|
||||
stream.on('data', (obj) => {
|
||||
if (obj && obj.name) {
|
||||
objectsList.push(obj.name);
|
||||
}
|
||||
});
|
||||
|
||||
stream.on('error', reject);
|
||||
|
||||
stream.on('end', async () => {
|
||||
try {
|
||||
if (objectsList.length > 0) {
|
||||
await client.removeObjects(targetBucket, objectsList);
|
||||
}
|
||||
resolve(true);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// Delete single file
|
||||
await client.removeObject(targetBucket, fileName);
|
||||
}
|
||||
}
|
||||
|
||||
// Log audit event
|
||||
|
|
|
|||
|
|
@ -34,7 +34,12 @@ export default defineEventHandler(async (event) => {
|
|||
const fileName = `${timestamp}-${sanitizedName}`;
|
||||
|
||||
// Construct full path including current folder
|
||||
const fullPath = currentPath ? `${currentPath}${fileName}` : fileName;
|
||||
// Ensure currentPath ends with / if it's a folder
|
||||
let normalizedPath = currentPath;
|
||||
if (normalizedPath && !normalizedPath.endsWith('/')) {
|
||||
normalizedPath += '/';
|
||||
}
|
||||
const fullPath = normalizedPath ? `${normalizedPath}${fileName}` : fileName;
|
||||
|
||||
// Get content type
|
||||
const contentType = mime.lookup(uploadedFile.originalFilename || '') || 'application/octet-stream';
|
||||
|
|
|
|||
Loading…
Reference in New Issue