это ваши лучшие варианты
async-busboy
koa-multer
пример koa-multer:
import Router from 'koa-router';
import multer from 'koa-multer';
const router = new Router();
const upload = multer({
storage: multer.memoryStorage()
});
router.post('/upload', upload.single('document'), async ctx => {
const { file } = ctx.req;
// Do stuff with the file here
ctx.status = 200;
});
источник
попытаться выполнить некоторую проверку перед загрузкой (изменить имя, если файл существует) - частичный пример кода:
let storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './public/uploads')
},
filename: function(req, file, callback) {
callback(null, file.fieldname + '-' + Date.now() +
path.extname(file.originalname))
//callback(null, file.originalname)
}
})
app.post('/api/file', function(req, res) {
var upload = multer({
storage: storage}).single('userFile');
upload(req, res, function(err) {
console.log("File uploaded");
res.end('File is uploaded')
})
})
пример источника