Emptyform
@Emptyform

Как протестировать загрузку файла на сервер?

Привет!

Пишу тест для загрузки файла на сервер. Вот код:
describe('POST request', () => {
        describe('post file.ext', () => {
            it('returns 200 & the file', done => {
                let content = fs.readFileSync(`${fixtures}/small.png`, {encoding: 'utf-8'});

                var formData = {
                    /*attachments: [
                        fs.createReadStream(`${fixtures}/small.png`)
                    ],
                    */
                    /*my_file: fs.createReadStream(`${fixtures}/small.png`),
                    */
                    custom_file: {
                        value:  fs.createReadStream(`${fixtures}/small.png`),
                        options: {
                            filename: 'small.png',
                            contentType: mime.lookup(`${fixtures}/small.png`)
                        }
                    }
                };
                request.post({url: `${url}/small.png`, formData: formData}, (error, response, body) => {
                    if (error) return done(error);
                    expect(response.statusCode).to.equal(200);

                    var data = fs.readFileSync(`${filesDirectory}/small.png`, {encoding: 'utf-8'});
                    if (!data) return done(error);

                    expect(data).to.deep.equal(content);
                    done();
                });
            });
        });
    });


Тест не проходит - загруженный файл не совпадает с исходным.
В начало принятого файла дописывается мусор типа:
----------------------------628275255943632608493620
Content-Disposition: form-data; name="custom_file"; filename="small.png"
Content-Type: image/png

Как сделать чтобы файл при загрузке на сервер не менялся?
  • Вопрос задан
  • 851 просмотр
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Это не мусор, это часть http протокола
как следствие загрузка файла у Вас сделана неправильно, если подзаголовки попадают в файл

UPD:
request.post({
  url: `${url}/small.png`,
  body: fs.createReadStream(`${fixtures}/small.png`),
  headers: {
    'Content-type': mime.lookup(`${fixtures}/small.png`),
    'x-filename': 'small.png'
  }
}, (error, response, body) => { /* Ваш код */ });
примерно так
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
22 мая 2024, в 02:15
10000 руб./за проект
21 мая 2024, в 23:47
30000 руб./за проект