在不使用FormData的情况下创建表单数据

问题描述 投票:0回答:1
  • 我正在使用节点获取来在平台内进行API调用。
  • 我需要进行API调用以传递表单数据中的文件
  • 下面是我的存根代码:
const fetch = require("node-fetch")
var myHeaders = {"Authorization": "Basic Y2hhdEJvdDpJRkxjYkAxMjM="
,'cache-control': 'no-cache'
,"content-type": "multipart/form-data;"
};

let file_content = "base 64 file content";

let getFormDataForWhatsAppStatement = (data,fileContent,fileExt)=>{
  let jsonData = { "data":{ "templateName":"Test_123", "fieldName":"Document_Purpose,Policy_Number,Document_Category", "fieldValue":`AttachDocument, ${data.policyNumber}, Customer_Requirement`, "docList":"Test_Doc" } }
  let formDataPairs = [];
  let finalFormData = '';

  formDataPairs.push(encodeURIComponent("") + '=' + encodeURIComponent(jsonData));
  formDataPairs.push(encodeURIComponent("") + '=' + encodeURIComponent(fileContent));

  finalFormData = formDataPairs.join('&').replace(/%20/g, '+');

  return finalFormData;
}

let formdata = getFormData({"policyNumber":"006558144"},file_content,"png");

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: formdata
};


fetch(url, requestOptions)
  .then(response => response.json())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
  • 我在这里得到的错误是边界参数未定义。
  • 因此,我按照以下线程中的说明删除了内容类型标头:Boundary Issue

  • 但是这给了我连接超时错误(因为请求格式不正确)。

  • 因此有一种方法可以创建类似于下面的代码的formData,而不使用FormData对象吗?

    ] >>
const FormData = require('form-data');
const fetch = require("node-fetch")
var formdata = new FormData();
var myHeaders = {"Authorization": "Basic Y2hhdEJvdDpJRkxjYkAxMjM="
//,"Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu"
};

formdata.append("", "{ \n   \"data\":{ \n\n      \"templateName\":\"Test_123\",\n      \"fieldName\":\"Document_Purpose,Policy_Number,Document_Category\",\n      \"fieldValue\":\"AttachDocument, G0000784, Customer_Requirement\",\n      \"docList\":\"Test_Doc\"  \n}\n}\n");
formdata.append("", "base 64 file data", "close.png");
var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: formdata,
  redirect: 'follow'
};

fetch(API_URL, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

我正在使用节点提取在平台内进行API调用。我需要进行API调用以在表单数据中传递文件。下面是我的存根代码:const fetch = require(“ node-fetch”)var myHeaders = {“ ...

javascript node.js multipartform-data form-data node-fetch
1个回答
0
投票

您不是尝试直接输入边界,而是尝试使用表单数据函数getBoundary()并将其分配给变量,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.