Tengo un problema para transformar este cURL: curl -F email=myname@example.com -F file=@file.txt https://srv-file6.gofile.io/uploadFile (srv-file6.gofile.io es un ejemplo, en realidad es algo como srv-store6.gofile.io, visto desde la solicitud misma)

En una solicitud HTTPS en node.js.

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

Intenté usar xmlhttprequest pero no funciona, no recibo ningún mensaje de error como respuesta pero no carga el archivo.

Ese es el sitio del que tomé la API cURL: https://gofile.io/api

0
404ProgramNotFound 4 dic. 2020 a las 12:18

2 respuestas

La mejor respuesta

Para enviar el archivo, primero debe leerlo junto con su código. Puede leer el archivo y luego enviarlo. De lo contrario, puede usar el siguiente ejemplo que usa la biblioteca fs para leer el archivo y luego la biblioteca node-fetch para enviar el archivo.

Primero, instale la biblioteca node-fetch:

npm i node-fetch

Luego, prueba el siguiente ejemplo:

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);
});
2
404ProgramNotFound 4 dic. 2020 a las 10:16

Le sugiero que siga las instrucciones informadas aquí https://developer.ibm.com/recipes/tutorials/uploading-files-to-web-server-using-ajax-xhr/

¿Es una operación del lado del servidor o es utilizada por una página de inicio? Por favor publique su portada también.

Está enviando una cadena, no un archivo de datos.

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);
0
DG-l 4 dic. 2020 a las 09:36