ForgeTotal.js 5
sk

Total.js 5

Odosielajte súbory a streamy klientovi

Total.js 5 · total5@0.0.19 filesdownloadstream Spustené s Total.js 5

$.file(path, [download]) odošle súbor z disku. Hlavička content-type vychádza z prípony. Ako druhý argument odovzdajte true, aby prehliadač súbor stiahol pod jeho vlastným názvom, alebo reťazec, ktorým názov zvolíte (attachment; filename*=... sa nastaví za vás, bezpečne pre UTF-8). Cesta, ktorá neexistuje, skončí stránkou 404.

$.stream(type, stream, [download]) odošle ľubovoľný čitateľný stream so zadaným typom obsahu: generovaný súbor, odpoveď iného servera alebo export z databázy. Nenastavuje dĺžku, takže odpoveď sa prenáša po častiach. PATH.public(), PATH.private() a PATH.tmp() vytvárajú absolútne cesty do priečinkov projektu; súbory v public/ sa už servírujú bez akejkoľvek trasy, preto $.file() používajte pre súbory, ktoré majú zostať súkromné alebo potrebujú predchádzajúcu kontrolu.

controllers/download.js
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'));
}