首页 > 解决方案 > 正确解析来自 API 的多部分表单响应,在客户端 javascript 上具有不同的 Content-Types

问题描述

我遇到了以下问题:

通过 API 请求,我得到一个多部分形式的响应,其中总共包含三个文件:

  1. JSON 中的元数据
  2. OBJ 或 STL 中的 3D 数据作为八位字节流
  3. 作为八位流的图像

这是我的 Ajax 请求(也用 fetch API 尝试过,但失败了,所以我想我试试旧的 AJAX 请求)

    $.ajax({
      beforeSend: function (xhr) {
        xhr.setRequestHeader("Authorization", "Bearer " + token);
        xhr.setRequestHeader("scanFormatEncoding", "obj");
      },
      type: "GET",
      url: this.baseurl + this.scansEndpoint + "/" + this.ScanSessionID,
      data: params,
      xhrFields: {
        responseType: "blob",
      },
      success: function (blob, status, xhr) {}

编辑:也是我对 fetch API 的请求

   fetch(this.baseurl + this.scansEndpoint + "/" + this.ScanSessionID, {
      method: "GET",
      headers: {
        scanFormatEncoding: "obj",
        Authorization: "Bearer " + token,
        Accept: "*/*",
      },
    }).then((response) =>
      response.formData().then(function (formdata) {
      })
    );

在这里您可以看到 Content-Type 的响应标头:

我的响应标头

当我将 blob 转换为文本时,我可以验证所有数据似乎都在多部分响应中。但是,当我尝试使用自己的解析方法对其进行解析时,我往往无法正确解析图像的二进制数据。所以我的问题是,如何在不担心不同文件类型的情况下解析所有 3 个文件?

我已经搜索了解决方案,但只能找到一些 node.js 而不是客户端 JS。

标签: javascriptparsingmultipartform-dataclient-sidemultipart

解决方案


推荐阅读