Vlastné vyčistenie nahraných súborov a vytvorenie odkazov na dopyty
Odovzdané dočasné súbory zvyčajne zmiznú po uvoľnení žiadosti. $.autoclear(false) ich uchováva pre prácu, ktorá prežije odozvu: vaša aplikácia ich potom musí presunúť alebo odstrániť. $.clear() naplánuje odstránenie vymeniteľných nahraných súborov a vyprázdnení $.files; mazanie disku je asynchrónne. Nikdy neukladajte ľubovoľné cesty poskytnuté klientom na neskoršie vymazanie.
V 0.0.19 zostavte odkazy na dopyty s verejným pomocníkom QUERIFY() a kópiou dopytu, ako ukazuje tento recept. Vytvára reťazec dopytu, nie presmerovanie ani absolútnu adresu URL.
Mapa uložených súborov a koncové body čistenia nižšie sú lokálnym príslušenstvom; aplikácia by mala namiesto odhaľovania týchto koncových bodov používať vlastníctvo v rozsahu a trvalé úložisko.
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' })) });
});
};