Files
2026-11-05 01:04:53 +08:00

7 lines
883 B
TypeScript

import type {NextApiRequest,NextApiResponse} from 'next';
import {readFile} from 'node:fs/promises';
import path from 'node:path';
import {authorize,readTask,dir,fail} from '../../../../../lib/store';
export const config={api:{responseLimit:'14mb'}};
export default async function handler(req:NextApiRequest,res:NextApiResponse){res.setHeader('Cache-Control','no-store');if(!authorize(req,res))return;if(req.method!=='GET')return res.status(405).json({error:{code:'METHOD_NOT_ALLOWED',message:'Use GET'}});try{const t=await readTask(String(req.query.id));const b=await readFile(path.join(dir(t.id),'document'));res.setHeader('Content-Type','application/octet-stream');res.setHeader('Content-Disposition',`attachment; filename="document"; filename*=UTF-8''${encodeURIComponent(t.document.name)}`);res.setHeader('X-Content-Type-Options','nosniff');res.send(b);}catch(e){fail(res,e);}}