fetch() POST 请求返回“错误 415 不支持的媒体类型”

问题描述 投票:0回答:0

尝试使用 fetch() 上传 PDF 文件时,我不断收到 415 错误。 PDF文件和js文件保存在同一个目录下,名字绝对没错

async function uploadFile(filePath, extension, timestamp) {

    const url = "https://api.hubapi.com/files/v3/files";
    // const url = "https://api.hubapi.com/filemanager/api/v3/files/upload"; // also doesn't work.
    var filename = `${filePath}.${extension}`;

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

    var formData = {
        file: fs.createReadStream(filename),
        fileName: `${filename} (${timestamp}).${extension}`,
        options: JSON.stringify(fileOptions),
        folderPath: 'Quotations'
    };

    try {
        const response = await fetch(url, { 
            "method": "POST",
            "formData": formData,
            "headers": {
                'Authorization': `Bearer ${process.env.ACCESS_TOKEN}`,
                "Content-Type": "application/pdf"
            }
        });

        if(!response.ok) {
            throw new Error(`Error. Response not ok: ${response.status}`);
        }
        
        const data = await response.json();
        return data;

    } catch(error) {
        console.log(`Error: ${error}`);
    }

}

const fileId = uploadFile("Quotation", "pdf", getCurrentTimestamp());
fileId.then((data) => console.log(data));

我尝试将

headers
中的“Content-Type”更改为几个不同的选项,并且都吐回400和415错误:

"Content-Type": "multipart/form-data"
- “错误:错误:HTTP 错误:400”。

"Content-Type": "application/json"
- “错误:错误:HTTP 错误:415”。

"Content-Type": "text/plain"
- “错误:错误:HTTP 错误:415”。

排除“Content-Type”返回 - “Error: Error: HTTP Error: 400”.

当我使用 request.post() 而不是 fetch() 时,我可以上传文件。但是我想使用 fetch()。

javascript node.js fetch-api hubspot-api
© www.soinside.com 2019 - 2024. All rights reserved.