import { fetchBillById } from '@/app/lib/actions/billActions'; import { notFound } from 'next/navigation'; export async function GET(request: Request, { params:{ id } }: { params: { id:string } }) { const [locationID, billID] = id.split('-'); const [location, bill] = await fetchBillById(locationID, billID, true) ?? []; if(!bill?.attachment) { notFound(); } // convert fileContentsBase64 from Base64 string to binary string const fileContentsBuffer = Buffer.from(bill.attachment.fileContentsBase64, 'base64'); // convert fileContentsBuffer to format that can be sent to the client const fileContents = new Uint8Array(fileContentsBuffer); return new Response(fileContents, { status: 200, headers: { 'Content-Type': "application/octet-stream", 'Content-Disposition': `attachment; filename="${bill.attachment.fileName}"`, 'Last-Modified': `${bill.attachment.fileLastModified}` } }); }