Trimite fișiere și stream-uri către client
$.file(path, [download]) trimite un fișier de pe disc. content-type provine din extensie. Transmite true ca al doilea argument pentru ca browserul să descarce fișierul cu numele lui, sau un șir pentru a alege numele (attachment; filename*=... este setat pentru tine, sigur pentru UTF-8). O cale care nu există se termină cu pagina 404.
$.stream(type, stream, [download]) trimite orice stream care poate fi citit, cu tipul de conținut dat: un fișier generat, răspunsul altui server sau un export din baza de date. Nu setează lungimea, deci răspunsul este trimis în bucăți. PATH.public(), PATH.private() și PATH.tmp() construiesc căi absolute către folderele proiectului; fișierele din public/ sunt deja servite fără nicio rută, așa că folosește $.file() pentru fișierele care trebuie să rămână private sau care necesită o verificare prealabilă.
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'));
}