ForgeTotal.js 5
sv

Total.js 5

Själva uppladdade filer rengöring och bygga frågor länkar

Total.js 5 · total5@0.0.19 total5reference Körd med Total.js 5

Uppladdade temporära filer försvinner normalt när förfrågan frigörs. $.autoclear(false) behåller dem för arbete som överlever svaret: din applikation måste då flytta eller ta bort dem. $.clear() schemalägger borttagning av borttagbara uppladdningar och tömmer $.files; borttagning från disk är asynkron. Spara aldrig godtyckliga sökvägar som en klient skickat för senare borttagning.

I 0.0.19 bygga en fråga länkar med den offentliga QUERIFY() hjälpen och en kopia av frågan, som detta recept visar. Det producerar en fråga sträng, inte en omdirigering eller en absolut URL.

Kartan över behållna filer och rensningsendpointerna nedan är en lokal fixture; en applikation bör använda avgränsat ägande och beständig lagring i stället för att exponera dessa endpoints.

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' })) });
	});
};