从curl到HTTPS请求



我在转换此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/

它是服务器端操作还是由前端页面使用?也请张贴你的首页。

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

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);

相关内容

最新更新