简体   繁体   English

节点 axios 未发送正确的 header:'Content-Type':'multipart/form-data'

[英]Node axios not sending correct header: 'Content-Type': 'multipart/form-data'

I am attempting to upload a file using the Node example provided in the HubSpot docs .我正在尝试使用HubSpot 文档中提供的节点示例上传文件。

I am receiving 415(Unsupported media type) .我收到415(Unsupported media type) The response says I am sending the header application/json even though I am setting multipart/form-data .响应说我正在发送 header application/json即使我正在设置multipart/form-data

const uploadFile = async () => {    

    const postUrl = `https://api.hubapi.com/filemanager/api/v3/files/upload?hapikey=${HAPI_KEY}`;

    const filename = `${APP_ROOT}/src/Files/Deal/4iG_-_CSM_Additional_Capacity/test.txt`;

    const headers = {
        'Content-Type': 'multipart/form-data'
    }

    var fileOptions = {
        access: 'PUBLIC_INDEXABLE',
        overwrite: false,
        duplicateValidationStrategy: 'NONE',
        duplicateValidationScope: 'ENTIRE_PORTAL'
    };

    var formData = {
        file: fs.createReadStream(filename),
        options: JSON.stringify(fileOptions),
        folderPath: '/Root'
    };

    try {
        const resp = await axios.post(postUrl, formData, headers); // API request

        console.log(resp.data)
    } catch (error) {
        console.log("Error: ", error);
    }
}

Can you see what the problem is or recommend a better way of uploading the file?您能看出问题所在或推荐更好的上传文件方式吗?

Thanks!谢谢!

The Node example you link to uses the (deprecated) request module , not Axios.您链接到的节点示例使用(已弃用) request模块,而不是 Axios。

To use Axios ( source ) you would rewrite that as:要使用 Axios ( source ),您可以将其重写为:

const FormData = require('form-data');
 
const form = new FormData();
form.append('file', fs.createReadStream(filename));
form.append('options', JSON.stringify(fileOptions));
form.append('folderPath', '/Root');

const config = { headers: form.getHeaders() };

axios.post(postUrl, form, config);

We can Run API in Postman and check NodeJs - Axios Detail in Postman Code Snippet and I Think That's the Better way for this.我们可以在 Postman 中运行 API 并在 Postman 代码片段中检查 NodeJs - Axios 详细信息,我认为这是更好的方法。

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

const uploadFile = async () => {
    try {
        let data = new FormData();
        data.append('folderPath', '/Root');
        form.append('file', fs.createReadStream(`${APP_ROOT}/src/Files/Deal/4iG_-_CSM_Additional_Capacity/test.txt`));
        data.append('options', JSON.stringify({
            access: 'PUBLIC_INDEXABLE',
            overwrite: false,
            duplicateValidationStrategy: 'NONE',
            duplicateValidationScope: 'ENTIRE_PORTAL'
        }));
        
        var config = {
            method: 'post',
            url: `https://api.hubapi.com/filemanager/api/v3/files/upload?hapikey=${HAPI_KEY}`,
            headers: {
                'Content-Type': 'multipart/form-data'
            },
            data: data
        };
        
        const resp = await axios(config); // API request
        console.log(resp.data)
    } catch (error) {
        // error
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 axios 发布请求正在发送请求 header 的 Content-Type: multipart/form-data 导致未定义的 req.body - axios post request is sending a request header of Content-Type: multipart/form-data resulting in undefined req.body Axios multipart/form-data 出现在后端,没有内容类型 - Axios multipart/form-data comes up in the backend with no content-type 使用Javascript(或Angular)在每个部分上使用不同的Content-Type编写multipart / form-data - Composing multipart/form-data with a different Content-Type on each parts with Javascript (or Angular) 如何提取通过 multipart/form-data 发送的文件的 Content-Type - How to extract the Content-Type of a file sent via multipart/form-data 如何从multipart / form-data正文请求中删除Content-Type? - How to remove Content-Type from multipart/form-data Body Request? 在XHR中使用multipart / form-data作为Content-Type时获得'400 Bad Request' - Getting '400 Bad Request' when using multipart/form-data as Content-Type in XHR 使用 axios 在 POST 多部分/表单数据请求中发送文件和 json - sending file and json in POST multipart/form-data request with axios 请求不包含多部分/表单数据或多部分/混合流,内容类型标头为false - the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is false 如何设置POST的MIME类型-axios中的multipart / form-data? - How to set MIME type for POST - multipart/form-data in axios? 在axios中设置Content-Type标头会导致没有数据发送 - Setting Content-Type header in axios causes no data is sent
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM