从 curl 到 HTTPS 请求

from curl to HTTPS request

我在转换此 cURL 时遇到问题: curl -F email=myname@example.com -F file=@file.txt https://srv-file6.gofile.io/uploadFile (srv-file6.gofile.io 是一个例子,现实中是类似 srv-store6.gofile.io 的东西,从请求本身看)

进入 node.js 上的 HTTPS 请求。

var xmlhttprequest = require ("xmlhttprequest").XMLHttpRequest;
var xhr = new xmlhttprequest();

xhr.open('POST','https://srv-store6.gofile.io/uploadFile',false,null,null);
xhr.setRequestHeader('Content-Type','multipart/form-data');
xhr.send('email=test@test.com&file=C:\Users\marco\Pictures\programming\Cattura.png');
xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      console.log(this.responseText);
    }
}

我试过使用 xmlhttprequest 但没有用,我没有收到任何错误消息作为响应,但它没有上传文件。

那是我从 api cURL 获取的网站:https://gofile.io/api

为了发送文件,首先您需要在您的代码中阅读它。您可以读取文件,然后发送。否则,您可以使用下面的示例,该示例使用 fs 库读取文件,然后使用 node-fetch 库发送文件。

首先,安装node-fetch库:

npm i node-fetch

然后,试试下面的例子:

const fetch = require('node-fetch');
var FormData = require('form-data');
let fs = require('fs');
let file = fs.createReadStream('C:/Users/marco/Pictures/programming/Cattura.png');
var formData = new FormData();
formData.append('file', file );
formData.append('email', 'test@test.com' );

// @ts-ignore
fetch('https://srv-store6.gofile.io/uploadFile', {
    method: 'POST',
    body: formData
})
.then(function(res) {
    return res.json();
}).then(function(json) {
    console.log(json);
});

我建议您按照此处报告的说明进行操作 https://developer.ibm.com/recipes/tutorials/uploading-files-to-web-server-using-ajax-xhr/

是服务端操作还是前端页面使用?请post你的首页也。

您发送的是字符串而不是文件数据。

var formData = new FormData();

formData.append(‘myFile’, files[0], files[0].name);

var xhr = new XMLHttpRequest();

xhr.open(‘POST’, ‘/upload’, true);

xhr.onload = function () {

if (xhr.status === 200) {

alert(‘File successfully uploaded’)

} else {

alert(‘File upload failed!’);

}

};

xhr.send(formData);