Как записать файл с буферным массивом с помощью метода put?

Есть ли способ записать файл с использованием массива буферов и типа содержимого с помощью метода put?

requestify.request('some url', {
                    method: 'PUT',
                    body: buffArray, //need modifications here
                    headers: {
                        'Content-Type': res_file.headers['content-type']
                    }
                }).then(function (res) {
                    console.info(res);
                })

Я мог отправить данные, но файл не хранится должным образом.

рабочий код Java

   httpcon.setRequestMethod("PUT");
        httpcon.setReadTimeout(100000);
        httpcon.setDoOutput(true);
        httpcon.setRequestProperty("Content-Type", conenttype);
        httpcon.connect();
        OutputStream os = httpcon.getOutputStream();

        os.write(in.toByteArray(), 0, in.size());

        responceCode = httpcon.getResponseCode();

        httpcon.disconnect();

Как ваш сервер обрабатывает запрос?

Geshode 16.01.2019 08:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
279
1

Ответы 1

Мой личный совет - использовать встроенный пакет http или https от Node.JS.

Почему? Поскольку вы хотите записывать и читать двоичные файлы, которые могут быть достаточно большими, чтобы вызвать у вас проблемы, и что касается того, что я тестировал с requestify, это создаст вам проблемы при использовании двоичных ответов (он их строчит!).

Вы можете просто использовать потоки, что избавит вас от головной боли.

Вы можете проверить это, например:

const fs = require('fs');
const http = require('https');

const req = http.request({
  host: 'raw.githubusercontent.com',
  path: '/smooth-code/svgr/master/resources/svgr-logo.png',
  method: 'GET'
}, res => {
  res.pipe(fs.createWriteStream('test.png'));
});
req.end();

и адаптирован к предоставленному вами коду:

const fs = require('fs');
const http = require('https');

const req = http.request({
  host: 'some-host',
  path: '/some/path',
  method: 'PUT',
  headers: {
    'Content-Type': res_file.headers['content-type']
  }
}, res => {
  res.pipe(fs.createWriteStream('your-output-file.blob'));
});
// This part: If comes from HDD or from another request, I would recommend using .pipe also
req.write(buffArray);
req.end();

Дополнительная информация:

http-пакет https://nodejs.org/api/http.html

пакет фс https://nodejs.org/api/fs.html

Другие вопросы по теме