【问题标题】:javascript send local file to apijavascript将本地文件发送到api
【发布时间】:2018-10-24 10:14:40
【问题描述】:

我正在开发一个电子应用程序,它必须调用一个 api 来用我计算机中的文件 Y 替换(更新)服务器中的文件 X。 用户从服务器下载文件 X 以便对其进行编辑,(此文件将在我的计算机中命名为文件 Y)。 当用户完成编辑文件 Y 时,我检查文件 X 和 Y 是否不同,然后我调用 api 以便用文件 Y 替换文件 X。我不需要在调用 api 之前将文件 Y 放入表单中,我想做没有形式。 只有我的请求有效负载与我期望的不同,我的请求标头没有问题

我希望有类似的东西 我明白了

这就是我的工作

 const fs = require('fs');
  let fileY = fs.readFileSync(path.resolve('gitignore.txt'));
  let form = new FormData();
  form.append("type", "jur_document");
  form.append("file", fileY, 'gitignore.txt');
  form.append("saveActionType", "SAVEMAJOR");
  form.append("attributes", "MIMETYPE=text/plain");

  let settings = {
    "async": true,
    "url": `${Constante.URL}/documents`,
    "method": "POST",
    "type": "POST",
    "headers": {
      // "Content-Type": "text/plain",
      "Authorization": sessionStorage.getItem('authorization')
    },
    "processData": false,
    "contentType": false,
    "mimeType": "multipart/form-data",
    "data": form
  };

  $.ajax(settings)
    .done((response) => {
      console.log(response);
    }).fail(err => {
      console.log(err);
    });
}

【问题讨论】:

  • 你必须为"Content-Type": "multipart/form-data"设置一个HTTP头
  • 我这样做了,但我得到了相同的结果
  • 请重新阅读jQuery.ajax() 文档。您的设置对象中有冲突的设置,这将导致各种问题。 api.jquery.com/jquery.ajax
  • 这是我的新设置,但它仍然不需要文件
     let settings = { "url": ${Constante.URL}/documents, "method": "POST", "type": " POST", "headers": { "Content-Type": "multipart/form-data", "Authorization": sessionStorage.getItem('authorization') }, "processData": false, "contentType": false, "mimeType ": "文本/纯文本", "数据": 表格 }; 

标签: javascript jquery node.js electron


【解决方案1】:

我终于得到了解决方案 我阅读了我的文件并创建了一个用于重新创建文件的 blob

  const fs = require('fs');
  let buffer = fs.readFileSync(`${app.getAppPath()}/test.txt`);
  let fileY = new File([new Uint8Array(buffer)], 'test.txt', {
    type: 'text/plain'
  });

  form.append("file", fileY);

这里是ajax设置

  let settings = {
    "url": `${Constante.URL}/documents`,
    "type": "POST",
    "headers": {
      "Authorization": sessionStorage.getItem('authorization')
    },
    "processData": false,
    "contentType": false,
    "data": form
  };

【讨论】:

    猜你喜欢
    • 2016-06-27
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    相关资源
    最近更新 更多