# Καθαρίστε το δικό σας αρχείο και δημιουργήστε συνδέσμους αναζήτησης

> Ελέγξτε την προεπιλεγμένη φόρτιση καθαρισμού, αυτοκλειδί (ψεύδος), σαφή και αντικατάσταση ερωτήματος href.

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

Τα προσωρινά αρχεία που ανεβαίνουν συνήθως εξαφανίζονται όταν ελευθερώνεται το αίτημα. Το `$.autoclear(false)` τα κρατά για εργασία που επιζεί της απάντησης: η εφαρμογή σας πρέπει τότε να τα μετακινήσει ή να τα αφαιρέσει. Το `$.clear()` προγραμματίζει την αφαίρεση των αφαιρέσιμων μεταφορτώσεων και αδειάζει το `$.files`· η διαγραφή από τον δίσκο είναι ασύγχρονη. Μην αποθηκεύετε ποτέ αυθαίρετες διαδρομές που δίνει ένας client για μεταγενέστερη διαγραφή.

Σε 0.0.19 δημιουργήστε συνδέσμους αναζήτησης με το δημόσιο βοηθό `QUERIFY()` και ένα αντίγραφο της αναζυγίας, όπως δείχνει αυτή η συνταγή.

Ο χάρτης των διατηρημένων αρχείων και τα endpoints καθαρισμού παρακάτω είναι ένα τοπικό fixture· μια εφαρμογή πρέπει να χρησιμοποιεί οριοθετημένη ιδιοκτησία και ανθεκτική αποθήκευση αντί να εκθέτει αυτά τα 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' })) });
	});
};
```
