@@ -304,12 +304,52 @@ func UploadPackageFile(ctx *context.Context) {
304
304
305
305
packageVersion := v .Core ().String ()
306
306
307
- file , _ , err := ctx .Req .FormFile ("source-archive" )
307
+ // Get the multipart reader
308
+ reader , err := ctx .Req .MultipartReader ()
308
309
if err != nil {
309
- apiError (ctx , http .StatusBadRequest , err )
310
+ log .Error ("Failed to get multipart reader: %v" , err )
311
+ apiError (ctx , http .StatusBadRequest , fmt .Errorf ("invalid multipart form: %v" , err ))
312
+ return
313
+ }
314
+
315
+ var file io.Reader
316
+ var metadata string
317
+
318
+ // Read through all parts
319
+ for {
320
+ part , err := reader .NextPart ()
321
+ if err == io .EOF {
322
+ break
323
+ }
324
+ if err != nil {
325
+ log .Error ("Error reading multipart: %v" , err )
326
+ apiError (ctx , http .StatusBadRequest , fmt .Errorf ("invalid multipart form: %v" , err ))
327
+ return
328
+ }
329
+
330
+ formName := part .FormName ()
331
+ fileName := part .FileName ()
332
+
333
+ log .Debug ("Processing form part - Name: %s, FileName: %s" , formName , fileName )
334
+
335
+ if formName == "source-archive" {
336
+ file = part
337
+ } else if formName == "metadata" {
338
+ metadataBytes , err := io .ReadAll (part )
339
+ if err != nil {
340
+ log .Error ("Error reading metadata: %v" , err )
341
+ apiError (ctx , http .StatusBadRequest , fmt .Errorf ("invalid metadata: %v" , err ))
342
+ return
343
+ }
344
+ metadata = string (metadataBytes )
345
+ }
346
+ }
347
+
348
+ if file == nil {
349
+ log .Error ("No source-archive found in request" )
350
+ apiError (ctx , http .StatusBadRequest , errors .New ("no source-archive found in request" ))
310
351
return
311
352
}
312
- defer file .Close ()
313
353
314
354
buf , err := packages_module .CreateHashedBufferFromReader (file )
315
355
if err != nil {
@@ -319,7 +359,6 @@ func UploadPackageFile(ctx *context.Context) {
319
359
defer buf .Close ()
320
360
321
361
var mr io.Reader
322
- metadata := ctx .Req .FormValue ("metadata" )
323
362
if metadata != "" {
324
363
mr = strings .NewReader (metadata )
325
364
}
0 commit comments