首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axios multipart/form-data请求返回"request is not -form multipart/form-data“

Axios multipart/form-data请求返回"request is not -form multipart/form-data“
EN

Stack Overflow用户
提问于 2021-08-06 14:42:14
回答 2查看 313关注 0票数 0

我想使用Shopify api。我想用这个接口上传视频。所以像这样的官方文档:

https://shopify.dev/api/examples/product-media#videos-3d-models-post-request

因此,我创建了一个axios配置,并尝试发送请求。我的代码是这样截取的:

代码语言:javascript
复制
        let fd = new FormData();
        fd.append("bucket", bucket);
        fd.append("key", key);
        fd.append("policy", policy);
        fd.append("cache-control", cacheControl);
        fd.append("x-amz-signature", xAmzSignature);
        fd.append("x-amz-algorithm", xAmzAlgorithm);
        fd.append("x-amz-date", xAmzDate);
        fd.append("file", fs.createReadStream('./milk.mp4'));


        const config: AxiosRequestConfig = {
            url: "https://shopify-video-production-core-originals.s3.amazonaws.com/",
            data: fd,
            method: "POST",
            headers: { "Content-Type": "multipart/form-data" }
        }

        try {
            const videoPost = await axios(config);
        }
        catch (err) {
            console.log(err)
        }

所以,我得到了一个类似这样的错误:

代码语言:javascript
复制
   ....
   ....
   [Symbol(kOutHeaders)]: [Object: null prototype]
    },
    data: '<?xml version="1.0" encoding="UTF-8"?>\n' +
      '<Error><Code>MalformedPOSTRequest</Code><Message>The body of your POST request is not well-formed multipart/form-data.</Message><RequestId>184VT99AXG4J6FWW</RequestId><HostId>1IBK7dCgApORGZnaGxS/n22Ftgw0fRBW1EnMuhFpEPek5R3iwsa2T9MH2q8A31l1AU9lhAb2WYA=</HostId></Error>'
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}

为什么我会得到这个错误?我该如何解决这个问题呢?请帮帮忙

EN

回答 2

Stack Overflow用户

发布于 2021-08-06 15:21:52

正如documentation所说,formdata语法有两个版本。

按如下所述更改代码:

代码语言:javascript
复制
fd.append("file", fs.createReadStream('./milk.mp4'));

...

const config: AxiosRequestConfig = {
    url: "https://shopify-video-production-core-originals.s3.amazonaws.com/",
    data: fd,
    method: "POST",
    headers: { "Content-Type": "multipart/form-data" }
}

代码语言:javascript
复制
fd.append("file", fs.createReadStream('./milk.mp4'), {filename: 'milk.mp4'});

...

const config: AxiosRequestConfig = {
    url: "https://shopify-video-production-core-originals.s3.amazonaws.com/",
    data: fd,
    method: "POST",
    headers: fd.getHeaders()
}
票数 0
EN

Stack Overflow用户

发布于 2021-08-06 18:31:52

以下是解决方案

代码语言:javascript
复制
const config: AxiosRequestConfig = {
            url: "https://shopify-video-production-core-originals.s3.amazonaws.com/",
            data: fd,
            method: "POST",
            headers: { ...fd.getHeaders() }  // <-- This is the Fix.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68683488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档