Изпращане на файлове и потоци към клиента
$.file(path, [download]) изпраща файл от диска. content-type идва от разширението. Подайте true като втори аргумент, за да изтегли браузърът файла със собственото му име, или низ, за да изберете името (attachment; filename*=... се задава вместо вас, безопасно за UTF-8). Път, който не съществува, завършва със страницата 404.
$.stream(type, stream, [download]) изпраща всеки четим поток със зададения тип съдържание: генериран файл, отговор от друг сървър или експорт от база данни. Не задава дължина, така че отговорът се изпраща на части. PATH.public(), PATH.private() и PATH.tmp() изграждат абсолютни пътища до папките на проекта; файловете в public/ вече се сервират без никакъв маршрут, затова използвайте $.file() за файлове, които трябва да останат частни или изискват предварителна проверка.
const Fs = require('fs');
exports.install = function() {
ROUTE('GET /report/', report);
ROUTE('GET /report/save/', report_save);
ROUTE('GET /export/', export_csv);
ROUTE('GET /missing/', missing);
};
function filepath() {
var filename = PATH.tmp('report.txt');
Fs.writeFileSync(filename, 'Total.js report\n');
return filename;
}
function report($) {
$.file(filepath());
}
function report_save($) {
$.file(filepath(), 'my report.txt');
}
function export_csv($) {
var stream = Fs.createReadStream(filepath());
$.stream('text/csv', stream, 'export.csv');
}
function missing($) {
$.file(PATH.tmp('does-not-exist.txt'));
}