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

> Kontrollera standarduppladdning rengöring, autoclear(falsk), explicit tydlig och href fråga ersättning.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: sv
Content-SHA256: ad35ccd8eed93f39569dd91a006b1faefeafb856d16217c7742d6426110f26e1
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

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.

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