使用 restify 上传文件后清理临时文件

Cleaning temporary files after file upload with restify

我正在使用 restify 构建一个节点存储服务器。我正在通过 restify.bodyParser 处理上传,它在后台使用 formidable

Formidable 默认将文件存储在 os.tmpDir() 中,我需要将其更改为其他文件夹,因此我通过 restify.bodyParser({uploadDir: '/path/to/new/tmp'}) 进行了更改。

问题是即使在我处理完请求后,这些临时文件仍保留在 tmp 目录中。

我看到了这个问题(Handling Temporary Files after upload),假设处理后删除tmp文件。

我的问题是,您是否需要始终手动删除文件?即使使用默认的 os.tmpDir() 目录?默认系统 tmp 文件夹如何工作?它有时会自己冲洗吗?

通常,对于文件上传,您的代码会将上传的文件从其临时位置移动到更永久的位置。如果在处理上传后,您留下了一个临时文件,您应该手动清理它(使用 fs.unlink())。

在 UNIX 类型的操作系统上,os.tmpDir()(通常是 /tmp)不会被系统定期清除(尽管它通常在系统启动期间被清除)。

您可以删除单个文件,也可以删除所有文件

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