Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何让Axios使用FormData发送请求?_Node.js_Axios_Multipartform Data - Fatal编程技术网

Node.js 如何让Axios使用FormData发送请求?

Node.js 如何让Axios使用FormData发送请求?,node.js,axios,multipartform-data,Node.js,Axios,Multipartform Data,当我使用axios时,我无法让我调用的服务器识别我提供的FormData。它一直告诉我,我没有提供正确的FormData,即使它在Postman和节点本机http中工作(见下文): 我能够在Postman中使用它,并使用它使用Node的本机http进行导出,它也可以工作: import { Router } from "express"; import { https } from "follow-redirects"; const router = R

当我使用
axios
时,我无法让我调用的服务器识别我提供的FormData。它一直告诉我,我没有提供正确的FormData,即使它在Postman和节点本机http中工作(见下文):

我能够在Postman中使用它,并使用它使用Node的本机http进行导出,它也可以工作:

import { Router } from "express";
import { https } from "follow-redirects";

const router = Router();

router.get("/", () => {
    const options = {
        method: "POST",
        hostname: "xxx",
        path: "/xx/xxx",
        headers: {
            "Content-Type": "multipart/form-data; boundary=--------------------------811161660471543283806813",
            Cookie: "xxx",
        },
        maxRedirects: 20,
    };

    const req = https.request(options, (res: any) => {
        const chunks: any[] = [];

        res.on("data", (chunk: any) => {
            chunks.push(chunk);
        });

        res.on("end", () => {
            const body = Buffer.concat(chunks);
            console.log(body.toString());
        });

        res.on("error", (error: any) => {
            console.error(error);
        });
    });

    const postData = `------WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"key1\"\n\n[\"value1\"]\n------WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"key2\"\n\nvalue2\n------WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"key3\"\n\nvalue3\n------WebKitFormBoundary7MA4YWxkTrZu0gW--`;

    req.setHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");

    req.write(postData);

    req.end();
});

module.exports = router;

我通读了一遍才明白。直到接近尾声时,古格罗斯才发布了他使用
.getHeaders()
。瞧,我也把它添加到了我的标题中,它起了作用

更新我的代码,下面是它的样子:

const response = await axios.post("https://xxx", formData, { headers: formData.getHeaders() });
添加.getHeaders()对我很有用!
const response = await axios.post("https://xxx", formData, { headers: formData.getHeaders() });