ForgeTotal.js 5
bg

Total.js 5

Собственото изтегляне на файлове и изграждане на линкове за запитване

Total.js 5 · total5@0.0.19 total5reference Изпълнено с Total.js 5

Качените временни файлове обикновено изчезват, когато заявката се освободи. $.autoclear(false) ги запазва за работа, която надживява отговора: приложението ви трябва тогава да ги премести или премахне. $.clear() планира премахването на премахваемите качвания и изпразва $.files; изтриването от диска е асинхронно. Никога не съхранявайте произволни пътища, подадени от клиент, за по-късно изтриване.

В 0.0.19 изграждане на запитвания връзки с обществения помощник QUERIFY() и копие от запитването, както показва този рецепта.

Картата на запазените файлове и крайните точки за почистване по-долу са локален fixture; приложението трябва да използва ограничено притежание и траен склад, вместо да излага тези крайни точки.

controllers/lifecycle.js
var paths = Object.create(null);
exports.install = function() {
	ROUTE('POST /upload/{mode}/ @upload <1mb', function($) {
		var file = $.files[0];
		if (!file) return $.invalid(400);
		var id = UID();
		paths[id] = file.path;
		if ($.params.mode === 'retain') $.autoclear(false);
		if ($.params.mode === 'clear') $.clear();
		$.json({ id: id, files: $.files.length });
	});
	ROUTE('GET /exists/{id}/', $ => $.json({ exists: !!paths[$.params.id] && F.Fs.existsSync(paths[$.params.id]) }));
	ROUTE('POST /cleanup/{id}/', function($) {
		var path = paths[$.params.id];
		if (path) { F.Fs.rmSync(path, { force: true }); delete paths[$.params.id]; }
		$.success();
	});
	ROUTE('GET /link/', function($) {
		var broken = false;
		try { $.href('page', '2'); } catch (e) { broken = e instanceof TypeError; }
		$.json({ broken: broken, link: QUERIFY('', Object.assign({}, $.query, { page: '2 & more' })) });
	});
};