narinder1231's picture
improve error logging and error messages
d747060
import { s3, generateSignedUrl, generateDownloadUrl } from '../../middlewares/multer';
import { logger } from '../../utils/logger';
export const uploadInvoice = async (files: Express.Multer.File[]) => {
const uploadPromises = files.map(async (file) => {
const objectKey = Date.now().toString() + '-' + file.originalname;
const bucketName = process.env.AWS_S3_BUCKET_NAME || '';
try {
const signedUrl = await generateSignedUrl({
bucketName,
objectKey,
contentType: file.mimetype,
});
// Use fetch to upload the file using the signed URL
const response = await fetch(signedUrl, {
method: 'PUT',
headers: {
'Content-Type': file.mimetype,
},
body: file.buffer,
});
if (!response.ok) {
throw new Error('File upload failed');
}
// Generate download URL
const downloadUrl = await generateDownloadUrl({
bucketName: process.env.AWS_S3_BUCKET_NAME || '',
objectKey,
});
return { file: file.originalname, url: downloadUrl };
} catch (err:any) {
logger.error('Error uploading file');
logger.error(err);
return { file: file.originalname, error: err.message };
}
});
return Promise.all(uploadPromises);
};
export const getDownloadUrl = async (filename: string) => {
const objectKey = Date.now().toString() + '-' + filename;
const bucketName = process.env.AWS_S3_BUCKET_NAME || '';
const downloadUrl = await generateDownloadUrl({
bucketName: bucketName,
objectKey,
});
return downloadUrl;
}