diff --git a/Libraries/Network/FormData.js b/Libraries/Network/FormData.js index 8ff360688693a2..07e16108bc373f 100644 --- a/Libraries/Network/FormData.js +++ b/Libraries/Network/FormData.js @@ -74,7 +74,7 @@ class FormData { // an object with a `uri` attribute. Optionally, it can also // have a `name` and `type` attribute to specify filename and // content type (cf. web Blob interface.) - if (typeof value === 'object' && value) { + if (typeof value === 'object' && !Array.isArray(value) && value) { if (typeof value.name === 'string') { headers['content-disposition'] += '; filename="' + value.name + '"'; } diff --git a/Libraries/Network/__tests__/FormData-test.js b/Libraries/Network/__tests__/FormData-test.js index b93b8a5334290f..7d143eb2aa7bbd 100644 --- a/Libraries/Network/__tests__/FormData-test.js +++ b/Libraries/Network/__tests__/FormData-test.js @@ -55,4 +55,26 @@ describe('FormData', function () { }; expect(formData.getParts()[0]).toMatchObject(expectedPart); }); + + it('should return non blob array', function () { + formData.append('array', [ + true, + false, + undefined, + null, + {}, + [], + 'string', + 0, + ]); + + const expectedPart = { + string: 'true,false,,,[object Object],,string,0', + headers: { + 'content-disposition': 'form-data; name="array"', + }, + fieldName: 'array', + }; + expect(formData.getParts()[0]).toMatchObject(expectedPart); + }); });