Estoy construyendo un servidor de almacenamiento de nodos con restify . Estoy procesando cargas a través de restify.bodyParser , que bajo el capó usa formidable .
Formidable almacena archivos en os.tmpDir() de forma predeterminada, y necesito cambiar eso a alguna otra carpeta, y así lo hice a través restify.bodyParser({uploadDir: '/path/to/new/tmp'}) .
El problema es que esos archivos temporales se mantienen en el directorio tmp incluso después de que termino de procesar la solicitud.
He visto esta pregunta ( Manejo de archivos temporales después de la carga ), que supone simplemente eliminar el archivo tmp después de procesarlo.
Mi pregunta es, ¿necesita eliminar siempre manualmente el archivo? ¿Incluso con el directorio os.tmpDir() predeterminado? ¿Cómo funciona la carpeta tmp predeterminada del sistema? ¿Se descarga solo a veces?
Generalmente, para cargas de archivos, su código mueve el archivo cargado desde su ubicación temporal a una ubicación más permanente. Si, después de procesar la carga, se queda con un archivo temporal, se supone que debe limpiarlo manualmente (usando fs.unlink() ).
En los sistemas operativos tipo UNIX, el sistema no limpia periódicamente os.tmpDir() (que suele ser /tmp ) (aunque normalmente se borra durante el arranque del sistema).
Puede eliminar un solo archivo o todos los archivos
import rimraf from 'rimraf'; import fs from 'fs'; export class DiskCleaner { constructor(public folderName: string) { Object.setPrototypeOf(this, DiskCleaner.prototype); } removeDirectory(): void { try { rimraf(this.folderName, function () {}); } catch (error) {} } unlinkFile(path: string): void { fs.unlinkSync(path); } }