Αποστολή αρχείων και streams στον πελάτη
Το $.file(path, [download]) στέλνει ένα αρχείο από τον δίσκο. Το content-type προκύπτει από την επέκταση. Περάστε true ως δεύτερο όρισμα ώστε ο περιηγητής να κατεβάσει το αρχείο με το δικό του όνομα ή ένα κείμενο για να επιλέξετε το όνομα (το attachment; filename*=... ορίζεται για εσάς, ασφαλές για UTF-8). Μια διαδρομή που δεν υπάρχει καταλήγει στη σελίδα 404.
Το $.stream(type, stream, [download]) στέλνει οποιοδήποτε αναγνώσιμο stream με τον δοσμένο τύπο περιεχομένου: ένα παραγόμενο αρχείο, την απάντηση ενός άλλου διακομιστή ή μια εξαγωγή βάσης δεδομένων. Δεν ορίζει μήκος, οπότε η απάντηση αποστέλλεται σε τμήματα. Τα 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'));
}