Я не могу найти API для этого в unirest js библиотеке.
Это потому, что его нет: https://github.com/Kong/unirest-nodejs/issues/49 :
-
Вы можете использовать базовую библиотеку запросов для потоковой передачи, Я открыт для запроса на вытягивание либо в этой ветке или версию 1.0 для добавления потоковой передачи.
Проблема все еще открыта.
Но из этого выпуска и из исходного кода вы можете узнать, что end()
возвращает request
(см. https://github.com/request/request )
Unirest.request = require('request')
...
end: function (callback) {
...
Request = Unirest.request($this.options, handleRequestResponse)
Request.on('response', handleGZIPResponse)
...
return Request
}
и из исходного кода request
вы можете узнать, что фактический запрос еще не отправлен (он отложен). Так что вы можете взломать его. И вместо этого используйте его API:
const request = unirest.put(constants.server2)
.auth({
user: self.userName,
pass: self.password
})
.header('X-Checksum-Sha1', sha1Hash)
.header('X-Checksum-Md5', md5Hash)
// .send(fs.readFileSync(filePath))
.end(...)
fs.createReadStream(filePath).pipe(request) // just pipe it!
В качестве примечания: unirest основан на запросе , запрос теперь не рекомендуется . Итак ... может быть, вам нужно держаться подальше от unirest .