swagger-axios-codegen icon indicating copy to clipboard operation
swagger-axios-codegen copied to clipboard

Issue with file uploads

Open joshstrange opened this issue 4 years ago • 3 comments

The JSON Swagger file looks like it should work according the the spec and I dug down into the code and I think the issue is in mapFormDataToV2 (or one level above).

Relevant parts of my spec:

"/photos/fromUpload": {
  "post": {
	"operationId": "createFromUpload",
	"summary": "",
	"parameters": [],
	"requestBody": {
	  "required": true,
	  "description": "Upload File",
	  "content": {
		"multipart/form-data": {
		  "schema": {
			"$ref": "#/components/schemas/FileUploadDto"
		  }
		}
	  }
	},
	"responses": {
	  "201": {
		"description": "",
		"content": {
		  "application/json": {
			"schema": {
			  "$ref": "#/components/schemas/PhotoEntity"
			}
		  }
		}
	  }
	},
	"tags": [
	  "photos"
	]
  }
},

......

"FileUploadDto": {
	"type": "object",
	"properties": {
	  "file": {
		"type": "string",
		"format": "binary"
	  }
	},
	"required": [
	  "file"
	]
  },

From debugging the code I see that right being passed into mapFormDataToV2 my multiDataProperties is:

{ schema: { '$ref': '#/components/schemas/FileUploadDto' } }

but inside mapFormDataToV2 it doesn't "expand" the $ref like you do in getResponseType.ts. I tried expanding the FileUploadDto inline in the code and it correctly generated the axios code.

I feel like the fix is to either copy/paste some/all of the logic from getResponseType.ts into mapFormDataToV2 or abstract the logic away into another function they both use. Thoughts?

joshstrange avatar Jun 03 '20 02:06 joshstrange

does not support uploading files by reference dto now.

Manweill avatar Jun 05 '20 14:06 Manweill

@Manweill Would you accept a PR that made it work with reference DTO's?

joshstrange avatar Jun 05 '20 16:06 joshstrange

@joshstrange Welcome.

Manweill avatar Jun 05 '20 16:06 Manweill