Есть ли способ записать файл с использованием массива буферов и типа содержимого с помощью метода 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();



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Мой личный совет - использовать встроенный пакет 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
Как ваш сервер обрабатывает запрос?