Отправить изображение с топором ios и грозным (nodejs -> express) - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь отправить изображение с топором ios (nodejs) на сервер express с огромным. Это код сценария ax ios:

const axios = require('axios');
const fs = require('fs')
const FormData = require('form-data')

var img = fs.readFileSync("C:/Users/alessio/Documents/FX/screenshot.png", 'utf8'); 
console.log(img)
let data = new FormData();
data.append('img', img, "img.png")
console.log(data);
axios.post('http://192.168.43.193:3000/testAPI/upload_img_mt', data, {
    headers: {
        'accept': 'application/json',
        'Accept-Language': 'en-US,en,q=0.8',
        'Content-Type': `multipart/form-data; boundary=${data._boundary}`,
        'timeout': 999999
    },
})
    .then(function (response){
        //console.log(response);
    })

А это код сервера с express и ответом управляется с огромным:

router.post('/upload_img_mt', function(req, res, next){
    console.log(req)

    var form = new formidable.IncomingForm();
    form.uploadDir = "fxdiary";
    form.encoding = 'utf8';
    form.on('fileBegin', function(name, file){
        console.log(form.uploadDir + "/" + file.name);
    });
    form.parse(req, function(err, fields, files) {
        console.log(files);
        console.log(err);
        console.log(fields);
    });
    res.sendStatus(200);
});

Изображение файла сохранено, но неверное изображение в формате png. Размер изображения не правильный и меняется иногда случайно. Например, исходный размер файла составляет 33 КБ и становится 900 байт или 54 КБ или другого значения.

Что происходит? Где проблема в этом коде?

1 Ответ

0 голосов
/ 06 января 2020

Вам не нужно передавать границу в заголовке типа контента, так как он автоматически добавляется браузером. Вы можете нарушить механизм границ по умолчанию.

Если проблема с размером файла все еще остается, попробуйте использовать модуль multer для обработки файлов на Nodejs стороне

...