Fájlok és streamek küldése a kliensnek
A $.file(path, [download]) egy fájlt küld a lemezről. A content-type a kiterjesztésből adódik. Adj meg true-t második argumentumként, hogy a böngésző a saját nevén töltse le a fájlt, vagy egy szöveget a név megválasztásához (az attachment; filename*=... beállítódik helyetted, UTF-8-biztosan). Egy nem létező útvonal a 404-es oldallal végződik.
A $.stream(type, stream, [download]) bármely olvasható streamet elküld a megadott tartalomtípussal: generált fájlt, másik szerver válaszát vagy adatbázis-exportot. Nem állít be hosszt, így a válasz darabokban (chunked) megy. A PATH.public(), PATH.private() és PATH.tmp() abszolút útvonalakat épít a projektmappákba; a public/ fájljait útvonal nélkül is kiszolgálja a rendszer, ezért a $.file()-t azokhoz a fájlokhoz használd, amelyeknek privátnak kell maradniuk vagy előbb ellenőrzést igényelnek.
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'));
}