簡體   English   中英

NodeJS:無法通過 Axios 發布表單數據

[英]NodeJS: Unable to post Form data via Axios

我通過requestAxios提交表單字段。 請求版本工作正常,但不是 Axios 之一。 我的猜測是我沒有正確提交數據。 共享兩個版本

const data = {
        'CSRF': csrf,
        'anti-csrftoken-a2z': '',
        'offerListingID': offerListingID
}

請求版本工作正常,返回 3021 重定向

request({url:urlAddItem,headers:headers,method:'POST',gzip:true,form:data},(error:any,response:any,html:string) => {
                console.log(response.statusCode)
                if(!error && response.statusCode == 200) {
                    //
                }
            });

Axios 版本不工作,返回200

const response = await axios({
                method: "post",
                url: urlAddItem,
                headers: headers,
                data:data
            });
            console.log(response.status )

我無法弄清楚我在哪里做錯了。

您必須首先將 object 轉換為表格數據。 你可以使用這個 function 來做到這一點

function createFormData(obj, form, namespace) {
  const formData = form || new FormData();
  for (const property in obj) {
    if (!obj.hasOwnProperty(property) || isUndefined(obj[property])) {
      continue;
    }
    const formKey = namespace ? `${namespace}[${property}]` : property;
    if (obj[property] instanceof Date) {
      formData.append(formKey, obj[property].toISOString());
    } else if (typeof obj[property] === 'object' && !(obj[property] instanceof File)) {
      createFormData(obj[property], formData, formKey);
    } else {
      formData.append(formKey, obj[property]);
    }
  }
  return formData;
}

然后做

await axios({
    method: "post",
    url: urlAddItem,
    headers: {"Content-Type": "multipart/form-data"},
    data: createFormData(data)
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM