1
- import { NextApiRequest , NextApiResponse } from "next" ;
1
+ import { type NextApiResponse } from "next" ;
2
2
import { PDFDocument } from "pdf-lib" ;
3
3
import multer from "multer" ;
4
4
import fs from "fs" ;
@@ -7,12 +7,12 @@ import { promisify } from "util";
7
7
import { NextResponse } from "next/server" ;
8
8
import { writeFile , unlink } from "fs/promises" ;
9
9
import { v4 as uuidv4 } from "uuid" ;
10
- import { cookies } from "next/headers" ; // For session tracking
10
+ import { cookies } from "next/headers" ;
11
11
12
12
const upload = multer ( { dest : "uploads/" } ) ;
13
13
const uploadMiddleware = promisify ( upload . array ( "files" ) ) ;
14
14
15
- const COOKIE_NAME = 'session_id' ; // Name of the session cookie
15
+ const COOKIE_NAME = 'session_id' ;
16
16
17
17
function getSessionId ( req : Request ) : string {
18
18
const sessionId = cookies ( ) . get ( COOKIE_NAME ) ?. value ;
@@ -30,17 +30,21 @@ export async function POST(req: Request, res: NextApiResponse) {
30
30
await uploadMiddleware ( req as any , res as any ) ;
31
31
32
32
const formData = await req . formData ( ) ;
33
- const files = formData . getAll ( "files" ) ;
33
+ const files : File [ ] = formData . getAll ( "files" ) as File [ ] ;
34
34
35
- if ( ! files ) {
35
+ if ( ! files || files . length === 0 ) {
36
36
return NextResponse . json ( { error : "No files received." } , { status : 400 } ) ;
37
37
}
38
38
39
39
try {
40
40
const pdfDoc = await PDFDocument . create ( ) ;
41
41
const sessionId = getSessionId ( req ) ;
42
42
43
- for ( const file of files ) {
43
+ const orderedFiles = Array . from ( files ) . sort ( ( a , b ) => {
44
+ return a . name . localeCompare ( b . name ) ;
45
+ } ) ;
46
+
47
+ for ( const file of orderedFiles ) {
44
48
const fileBlob = new Blob ( [ file ] ) ;
45
49
const imgBytes = Buffer . from ( await fileBlob . arrayBuffer ( ) ) ;
46
50
let img ;
@@ -77,6 +81,7 @@ export async function POST(req: Request, res: NextApiResponse) {
77
81
}
78
82
}
79
83
84
+
80
85
export async function DELETE ( req : Request , res : NextApiResponse ) {
81
86
try {
82
87
const sessionId = cookies ( ) . get ( COOKIE_NAME ) ?. value ;
0 commit comments