Propre nettoyage des fichiers téléchargés et création de liens de requête
Les fichiers temporaires téléchargés disparaissent normalement lorsque la demande est libérée. $.autoclear(false) les conserve pour les travaux qui survivent à la réponse : votre application doit alors les déplacer ou les supprimer. $.clear() planifie la suppression des téléchargements amovibles et vide $.files ; la suppression du disque est asynchrone. Ne stockez jamais les chemins arbitraires fournis par un client pour une suppression ultérieure.
Dans la version 0.0.19, créez des liens de requête avec l'assistant public QUERIFY() et une copie de la requête, comme le montre cette recette. Il produit une chaîne de requête, pas une redirection ou une URL absolue.
La carte des fichiers conservés et les points de terminaison de nettoyage ci-dessous sont un élément local ; une application doit utiliser une propriété étendue et un stockage durable plutôt que d'exposer ces points de terminaison.
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' })) });
});
};