Express 4:如何将文件上传到内存(例如,作为UTF-8字符串)而不是磁盘?

use*_*584 2 file-upload node.js express express-4 multer

我有一个Express 4应用程序,需要处理用户上传的数据文件并返回输出.文件相对较小(1-2 MB),所以我想将它们直接上传到内存(例如作为UTF-8字符串变量),而不是将它们保存到磁盘.

我到目前为止最接近的是multer模块及其onFileUploadData事件,但我无法弄清楚如何获取数据并将其传递给单独文件中的路由处理程序.

这可能与Node.js/Express有关吗?

ear*_*ing 6

我不知道这个选项在问题发生时是否可用,但现在肯定是.您可以在multer中将inMemory选项设置为true,这将为您提供缓冲区对象.喜欢这个:

app.use(multer({
    dest: './uploads/',
    inMemory: true
}));
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到multer的所有可用选项:https://github.com/expressjs/multer#options


更换为multer 1.x

Multer 1.0.0版介绍了存储引擎的概念,并提供了两个默认引擎:DiskStorageMemoryStorage.

这是您可以实例化它以将文件存储在内存中的方法:

multer({ storage: multer.memoryStorage({}) })
Run Code Online (Sandbox Code Playgroud)