• <bdo id='eNkJh'></bdo><ul id='eNkJh'></ul>
    <tfoot id='eNkJh'></tfoot>

        <small id='eNkJh'></small><noframes id='eNkJh'>

      1. <i id='eNkJh'><tr id='eNkJh'><dt id='eNkJh'><q id='eNkJh'><span id='eNkJh'><b id='eNkJh'><form id='eNkJh'><ins id='eNkJh'></ins><ul id='eNkJh'></ul><sub id='eNkJh'></sub></form><legend id='eNkJh'></legend><bdo id='eNkJh'><pre id='eNkJh'><center id='eNkJh'></center></pre></bdo></b><th id='eNkJh'></th></span></q></dt></tr></i><div id='eNkJh'><tfoot id='eNkJh'></tfoot><dl id='eNkJh'><fieldset id='eNkJh'></fieldset></dl></div>
        <legend id='eNkJh'><style id='eNkJh'><dir id='eNkJh'><q id='eNkJh'></q></dir></style></legend>
      2. 如何使用 fetch 发布多部分表单数据?

        How do I POST with multipart form data using fetch?(如何使用 fetch 发布多部分表单数据?)

          • <tfoot id='eEJEG'></tfoot>

                <tbody id='eEJEG'></tbody>

              <small id='eEJEG'></small><noframes id='eEJEG'>

              <i id='eEJEG'><tr id='eEJEG'><dt id='eEJEG'><q id='eEJEG'><span id='eEJEG'><b id='eEJEG'><form id='eEJEG'><ins id='eEJEG'></ins><ul id='eEJEG'></ul><sub id='eEJEG'></sub></form><legend id='eEJEG'></legend><bdo id='eEJEG'><pre id='eEJEG'><center id='eEJEG'></center></pre></bdo></b><th id='eEJEG'></th></span></q></dt></tr></i><div id='eEJEG'><tfoot id='eEJEG'></tfoot><dl id='eEJEG'><fieldset id='eEJEG'></fieldset></dl></div>
              <legend id='eEJEG'><style id='eEJEG'><dir id='eEJEG'><q id='eEJEG'></q></dir></style></legend>

                  <bdo id='eEJEG'></bdo><ul id='eEJEG'></ul>

                • 本文介绍了如何使用 fetch 发布多部分表单数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在获取这样的 URL:

                  I am fetching a URL like this:

                  fetch(url, {
                    mode: 'no-cors',
                    method: method || null,
                    headers: {
                      'Accept': 'application/json, application/xml, text/plain, text/html, *.*',
                      'Content-Type': 'multipart/form-data'
                    },
                    body: JSON.stringify(data) || null,
                  }).then(function(response) {
                    console.log(response.status)
                    console.log("response");
                    console.log(response)
                  })
                  

                  我的 API 期望数据是 multipart/form-data 所以我正在使用这种类型的 content-type... 但它给了我一个响应状态码为 400.

                  My API expects the data to be of multipart/form-data so I am using content-type of this type... But it is giving me a response with status code 400.

                  我的代码有什么问题?

                  推荐答案

                  您将 Content-Type 设置为 multipart/form-data,然后使用JSON.stringify 在正文数据上,返回 application/json.您的内容类型不匹配.

                  You're setting the Content-Type to be multipart/form-data, but then using JSON.stringify on the body data, which returns application/json. You have a content type mismatch.

                  您需要将数据编码为 multipart/form-data 而不是 json.通常上传文件时使用multipart/form-data,比application/x-www-form-urlencoded(HTML表单默认).

                  You will need to encode your data as multipart/form-data instead of json. Usually multipart/form-data is used when uploading files, and is a bit more complicated than application/x-www-form-urlencoded (which is the default for HTML forms).

                  multipart/form-data 的规范可以在 RFC 中找到1867.

                  有关如何通过 javascript 提交此类数据的指南,请参阅 这里.

                  For a guide on how to submit that kind of data via javascript, see here.

                  基本思想是使用 FormData 对象(在 IE < 10) 中不支持:

                  The basic idea is to use the FormData object (not supported in IE < 10):

                  async function sendData(url, data) {
                    const formData  = new FormData();
                  
                    for(const name in data) {
                      formData.append(name, data[name]);
                    }
                  
                    const response = await fetch(url, {
                      method: 'POST',
                      body: formData
                    });
                  
                    // ...
                  }
                  

                  根据这篇文章确保不是 设置 Content-Type 标头.浏览器会为你设置好,包括boundary参数.

                  Per this article make sure not to set the Content-Type header. The browser will set it for you, including the boundary parameter.

                  这篇关于如何使用 fetch 发布多部分表单数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Fetch multiple links inside foreach loop(在 foreach 循环中获取多个链接)
                  Backbone Fetch Request is OPTIONS method(Backbone Fetch Request 是 OPTIONS 方法)
                  Fetch API leaks memory in Chrome(Fetch API 在 Chrome 中泄漏内存)
                  How can I download and save a file using the Fetch API? (Node.js)(如何使用 Fetch API 下载和保存文件?(Node.js))
                  Send blob data to node using fetch, multer, express(使用 fetch、multer、express 将 blob 数据发送到节点)
                  Sending a custom User-Agent string along with my headers (fetch)(发送自定义用户代理字符串以及我的标头(获取))
                  <tfoot id='d1uCC'></tfoot>
                  • <bdo id='d1uCC'></bdo><ul id='d1uCC'></ul>

                    <small id='d1uCC'></small><noframes id='d1uCC'>

                    <i id='d1uCC'><tr id='d1uCC'><dt id='d1uCC'><q id='d1uCC'><span id='d1uCC'><b id='d1uCC'><form id='d1uCC'><ins id='d1uCC'></ins><ul id='d1uCC'></ul><sub id='d1uCC'></sub></form><legend id='d1uCC'></legend><bdo id='d1uCC'><pre id='d1uCC'><center id='d1uCC'></center></pre></bdo></b><th id='d1uCC'></th></span></q></dt></tr></i><div id='d1uCC'><tfoot id='d1uCC'></tfoot><dl id='d1uCC'><fieldset id='d1uCC'></fieldset></dl></div>

                        <tbody id='d1uCC'></tbody>

                    1. <legend id='d1uCC'><style id='d1uCC'><dir id='d1uCC'><q id='d1uCC'></q></dir></style></legend>