ForgeTotal.js 5
de

Total.js 5

Eigene Bereinigung hochgeladener Dateien und Erstellen von Abfragelinks

Total.js 5 · total5@0.0.19 total5reference Mit Total.js 5 ausgeführt

Hochgeladene temporäre Dateien verschwinden normalerweise, wenn die Anfrage freigegeben wird. $.autoclear(false) behält sie für Arbeiten, die über die Antwort hinausgehen: Ihre Anwendung muss sie dann verschieben oder entfernen. $.clear() plant die Entfernung entfernbarer Uploads und Leerzeichen $.files; Das Löschen der Festplatte erfolgt asynchron. Speichern Sie niemals beliebige, von einem Client bereitgestellte Pfade zum späteren Löschen.

Erstellen Sie in 0.0.19 Abfragelinks mit dem öffentlichen Hilfsprogramm QUERIFY() und einer Kopie der Abfrage, wie dieses Rezept zeigt. Es wird eine Abfragezeichenfolge erzeugt, keine Weiterleitung oder absolute URL.

Die unten aufgeführten Endpunkte für die Zuordnung gespeicherter Dateien und die Bereinigung sind lokal vorhanden. Eine Anwendung sollte bereichsbezogenen Besitz und dauerhaften Speicher nutzen, anstatt diese Endpunkte offenzulegen.

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