ForgeTotal.js 5
el

Total.js 5

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

Total.js 5 · total5@0.0.19 total5reference Εκτελέστηκε με το Total.js 5

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

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

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