【发布时间】: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