2014-09-14 3 views
2

У меня есть приложение Express 4, которое должно обрабатывать файлы данных, загруженные пользователями, и возвращать выходные данные. Файлы относительно небольшие (1-2 МБ), поэтому я хочу загрузить их непосредственно в память (например, как строчную переменную UTF-8), а не сохранять их на диск.Экспресс 4: Как загрузить файл в память (например, как строка UTF-8), а не диск?

Ближайший, который я получил до сих пор, это модуль multer и его событие onFileUploadData, но я не могу понять, как взять данные и передать их обработчику маршрута в отдельный файл.

Возможно ли это с помощью Node.js/Express?

ответ

5

Я не знаю, была ли эта опция доступна во время вопроса, но это, безусловно, сейчас. Вы можете установить для параметра inMemory значение true в multer, и это даст вам объект-буфер. Любит это:

app.use(multer({ 
    dest: './uploads/', 
    inMemory: true 
})); 

Вы можете найти все доступные варианты multer здесь: https://github.com/expressjs/multer#options


Обновление для multer 1.x

Multer версия 1.0.0 вводит понятие двигателей хранения и поставляется с двумя двигателями по умолчанию: DiskStorage и MemoryStorage.

Это, как вы можете создать его экземпляр для хранения файлов в памяти:

multer({ storage: multer.memoryStorage({}) })