Skicka filer och strömmar till klienten
$.file(path, [download]) skickar en fil från disk. content-type kommer från filändelsen. Ange true som andra argument för att webbläsaren ska ladda ner filen under dess eget namn, eller en sträng för att välja namnet (attachment; filename*=... sätts åt dig, UTF-8-säkert). En sökväg som inte finns slutar med 404-sidan.
$.stream(type, stream, [download]) skickar vilken läsbar ström som helst med den angivna innehållstypen: en genererad fil, svaret från en annan server eller en databasexport. Den sätter ingen längd, så svaret skickas i delar (chunked). PATH.public(), PATH.private() och PATH.tmp() bygger absoluta sökvägar till projektets mappar; filer i public/ serveras redan utan någon rutt, så använd $.file() för de filer som måste förbli privata eller först behöver en kontroll.
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'));
}