使用 axios 进行多部分/与 blob 混合

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

下面的curl命令适用于API调用。

curl -k --user "un:$PASSWORD" -X POST -H "内容类型:多部分/混合" -F "blob=@binaryfile" -F 'metadata={"prop1":"v1"," prop2":"v2"};type=application/json' https:///api/v2.0/entity

我怎样才能使用nodejs实现同样的效果?

        formData.append('blob', fs.createReadStream(binaryfile))
        formData.append('metadata', fs.createReadStream(jsonfile))
        const config = {
            method: 'POST',
            url: 'https://<host>/api/v2.0/entity',
            headers: {
                'Content-Type': 'multipart/mixed',
                'Accept': 'application/json'
            },
            data: formData
        }

        return await axios(config).then(function (response) {
            return response.data
        }).catch(error => {
            return error
        })
javascript axios multipart mixed
1个回答
0
投票

我正在编写此答案,假设您的

jsonfile
变量包含元数据中所需的属性。

您的请求中唯一缺少的是密码。创建一个变量并按如下方式使用它,或者将我对常量的使用替换为您在

.env
文件中声明的值:

const PASSWORD = 'password'; //You could also use env variable

formData.append('blob', fs.createReadStream(binaryfile))
    formData.append('metadata', fs.createReadStream(jsonfile))
    const config = {
        method: 'POST',
        url: 'https://<host>/api/v2.0/entity',
        headers: {
            'Content-Type': 'multipart/mixed',
            'Accept': 'application/json'
            //Use the Authorization header for your password
            'Authorization': 'Basic ${Buffer.from('un:' + 
                PASSWORD).toString('base64')}'
        },
        data: formData
    }

    return await axios(config).then(function (response) {
        return response.data
    }).catch(error => {
        return error
    })
© www.soinside.com 2019 - 2024. All rights reserved.