Извините, у меня есть несколько вопросов о createReadStream() здесь.
В основном то, что я делаю, это динамическое создание файла и его потоковая передача пользователю с использованием fs после его завершения. Я использую .pipe(), чтобы убедиться, что я правильно дросселирую (перестаньте читать, если буфер заполнен, начните снова, если нет, и т.д.) Вот пример моего кода, который у меня есть до сих пор.
http.createServer(function(req, res) {
var stream = fs.createReadStream('<filepath>/example.pdf', {bufferSize: 64 * 1024})
stream.pipe(res);
}).listen(3002, function() {
console.log('Server listening on port 3002')
})
Я прочитал в другом вопросе StackOverflow (извините, потерял его), что если вы используете обычные res.send() и res.end(), что .pipe() отлично работает, так как он вызывает .send и .end и добавляет дросселирование.
Это работает отлично для большинства случаев, за исключением того, что я хочу удалить файл после завершения потока и не использовать .pipe() означает, что мне придется обрабатывать дросселирование только для того, чтобы получить обратный вызов.
Итак, я предполагаю, что мне захочется создать свой собственный поддельный объект res, который имеет методы .send() и .end(), который выполняет то, что обычно выполняет res, однако на .end() Я положу дополнительный код для очистки созданного файла. Мой вопрос в основном, как я могу снять это?
Помогите с этим было бы очень благодарно, спасибо!