@@ -38,19 +38,30 @@ class UploadModel {
38
38
} ) . any ( ) ;
39
39
40
40
async doUpload ( req : NextApiRequest , res : NextApiResponse ) {
41
- return new Promise < { files : FileType [ ] } > ( ( resolve , reject ) => {
41
+ return new Promise < { files : FileType [ ] ; metadata : Record < string , any > } > ( ( resolve , reject ) => {
42
42
// @ts -ignore
43
43
this . uploader ( req , res , ( error ) => {
44
44
if ( error ) {
45
45
return reject ( error ) ;
46
46
}
47
47
48
48
resolve ( {
49
- // @ts -ignore
50
- files : req . files ?. map ( ( file ) => ( {
51
- ...file ,
52
- originalname : decodeURIComponent ( file . originalname )
53
- } ) )
49
+ files :
50
+ // @ts -ignore
51
+ req . files ?. map ( ( file ) => ( {
52
+ ...file ,
53
+ originalname : decodeURIComponent ( file . originalname )
54
+ } ) ) || [ ] ,
55
+ metadata : ( ( ) => {
56
+ if ( ! req . body ?. metadata ) return { } ;
57
+ try {
58
+ return JSON . parse ( req . body . metadata ) ;
59
+ } catch ( error ) {
60
+ console . log ( error ) ;
61
+
62
+ return { } ;
63
+ }
64
+ } ) ( )
54
65
} ) ;
55
66
} ) ;
56
67
} ) ;
@@ -64,7 +75,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse<
64
75
await connectToDatabase ( ) ;
65
76
const { userId } = await authUser ( { req, authToken : true } ) ;
66
77
67
- const { files = [ ] } = await upload . doUpload ( req , res ) ;
78
+ const { files, metadata } = await upload . doUpload ( req , res ) ;
68
79
69
80
const gridFs = new GridFSStorage ( 'dataset' , userId ) ;
70
81
@@ -74,8 +85,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse<
74
85
path : file . path ,
75
86
filename : file . originalname ,
76
87
metadata : {
88
+ ...metadata ,
77
89
contentType : file . mimetype ,
78
- encoding : file . encoding ,
79
90
userId
80
91
}
81
92
} )
0 commit comments