首页 > 解决方案 > XHR formdata 离子应用

问题描述

我对 xhr -> form-data 有一个奇怪的行为:

我开发了一个符合 Android 和 IOS 的 Ionic 应用程序。

我正在尝试使用 blob 和 formdata xhr 上传文件,行为是:

IOS - 效果很好。

Android - 在某些 Android 版本中运行良好,但 LG 和小米等设备根本没有响应。

这是我的代码:

const uploadInvoice = async(data, type = "expenses", file, cb) => {
  if (type === "incomes") {
    delete data.budget;
  }
  data.invoicedate = data.date;
  data.title = encodeURI(data.title);
  const formData = new FormData();
  const extention = file.name.split(".").pop();
  const newFileModified = new File(
    [file],
    `${Date.now().toString()}.${extention}`
  );
  formData.append("file", newFileModified);
  let xhr = new XMLHttpRequest();
  xhr.open("POST", `${BASE_URL}/api/management/file`);
  Object.keys(data).map(key => {
    xhr.setRequestHeader(key, data[key]);
  });
  xhr.setRequestHeader("client", "app");
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
      //if complete
      if (xhr.status === 200) {
        return cb(true);
      } else {
        return cb(false); //otherwise, some other code was returned
      }
    } else {
      return cb(false);
    }
  };
  xhr.send(formData);
};

请注意,我发送了 http 请求(而不是 https),但我拥有上传 http 请求的正确权限。

我通过互联网找到了没有成功的解决方案:-/

谢谢!!

标签: javascriptandroidionic4capacitor

解决方案


推荐阅读