Quantcast
Viewing all articles
Browse latest Browse all 348

How can I specify the content-type of a multi-part/form field?

I’m trying to post a multipart/form request like so:

const baseUrl = 'https://api-int.nmlv.nml.com/v1/aca-cip/documents';
  const params = {
    headers: {
      'Content-Type': ''multipart/form-data",
      'x-nm-nm_login_id': 'acakvlrt',
      "x-nm-request-id": "k6loadtest",
      'apikey': `${__ENV.ACA_APIKEY}`
    }
  };
  // metadata for multi-part form to create a document
  const metaData =  {
    "authLevelCde": authLevelCode,
    "aclName": authLevelCode,
    "attributes": {
      "docDescrCde": 5000
    },
    "singleValueAttributes": {
      "docDescrCde": 5000
    },
    "multiValueAttributes": {
    }
  }

  const formData = new FormData();
  formData.append('metadata', metaData);
  const randomUUID = uuidv4();
  formData.append('fileSize', randomUUID.length);
  formData.append('file', http.file(randomUUID, 'myuuid.txt', 'text/plain'));

  const res = http.post(baseUrl, formData.body(), params );
  console.log(res);

but the post returns a stats 500, and the res.error, error_code, and request fields are:

  "error": "",
  "error_code": 1500,
  "request": {
    "method": "POST",
    "url": "https://api-int.nmlv.nml.com/v1/aca-cip/documents",
    "headers": {
      "X-Nm-Request-Id": [
        "k6loadtest"
      ],
      "Apikey": [
        "xxxxxxxxxxxxxxxx"
      ],
      "User-Agent": [
        "k6/0.50.0 (https://k6.io/)"
      ],
      "Content-Type": [
        "multipart/form-data"
      ],
      "X-Nm-Nm_login_id": [
        "acakvlrt"
      ]
    },
    "body": "--------RWWorkerFormDataBoundary0.46vp38bxrw9\r\nContent-Disposition: form-data; name=\"metadata\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n--------RWWorkerFormDataBoundary0.46vp38bxrw9\r\nContent-Disposition: form-data; name=\"fileSize\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n--------RWWorkerFormDataBoundary0.46vp38bxrw9\r\nContent-Disposition: form-data; name=\"file\"; filename=\"myuuid.txt\"\r\nContent-Type: text/plain\r\n\r\nd1248d6d-763d-4a63-83ee-c2fb3b7cb6e2\r\n--------RWWorkerFormDataBoundary0.46vp38bxrw9--\r\n",
    "cookies": {}
  }

I see two possible clues in the res.request.body field:

  1. the ‘metadata’ form field is cited as having content-type ‘application/octet-stream’, whereas my µservice expects it to be ‘application/json’;
  2. the ‘fileSize’ form field is also cited as having content-type app/octet-stream, but i mean for it to be an integer.

Any idea what I’m doing wrong? Thanks!

3 posts - 2 participants

Read full topic


Viewing all articles
Browse latest Browse all 348

Trending Articles