Отправка данных формы в nodejs - PullRequest
0 голосов
/ 25 февраля 2019

Вопрос в другом, и я не смог найти ни одного. Вопрос касается отправки файлов через данные многочастной формы в виде простого nodejs.

Использование ссылка

I 'Я что-то упустил и грозный бросает ошибку на стороне сервера, некоторую ошибку синтаксического анализатора.

ошибка: ошибка синтаксического анализатора, проанализировано 0 из 44 байтов в IncomingForm.write

var boundary = "AaB03x";
var boundary2 = "BbC04y";

var http = require("http");
var fs = require("fs");
var config = require("../../config");
var files = [
    __dirname + "/../../../../assets/Watch/a.txt",
    __dirname + "/../../../../assets/Watch/b.txt",
];

var request = http.request({
    hostname: 'localhost',
    path: '/' + config.watch,
    method: 'POST',
    port: 50412,
    headers: {
        'accept': 'application/json;charset=UTF-8',
        'content-type': 'multipart/form-data; boundary=' + boundary,
    }
}, function(response){
    var buffers = [];
    response.on('data', buffers.push.bind(buffers));
    response.on('end', function(){
        try {
            var body = Buffer.concat(buffers).toString();
            if(response.statusCode == 200) {
                console.log(JSON.parse(body));
                done();
            } else {
                console.error(response.statusCode, body);
            }
        } catch(error) {
            console.log("catch ", error);
            console.error(error);
        }

    });
}).on('error', function(error){
    console.log("main error", error);
});


request.write("Content-Type: multipart/form-data; boundary=" + boundary);
request.write("\r\n\r\n");

request.write("--" + boundary);
request.write('Content-Disposition: form-data; name="files"');
request.write('Content-Type: multipart/mixed; boundary=' + boundary2);
request.write("\r\n\r\n");

request.write("--" + boundary2);
request.write('Content-Disposition: file; filename="a.txt"');
request.write('Content-Type: text/plain');
request.write("\r\n\r\n");

var readStream1 = fs.ReadStream(files[0]);
readStream1.on('error', function(){
    console.log("1 error");
});
readStream1.on('end', function(){
    console.log("1 end");

    request.write("--" + boundary2);
    request.write('Content-Disposition: file; filename="b.txt"');
    request.write('Content-Type: text/plain');
    request.write("\r\n\r\n");

    var readStream2 = fs.ReadStream(files[1]);
    readStream2.on('error', function(){
        console.log("2 error");
    });
    readStream2.on('end', function(){
        console.log("2 end");
        request.end();
    });
    readStream2.on('close', function(){
        console.log("2 close");
        request.write("--" + boundary2 + "--");
        request.write("--" + boundary + "--");
        request.end();
    });
    readStream2.pipe(request);

});
readStream1.on('close', function(){
    console.log('1 close');
});
readStream1.pipe(request);
...