我有一个类似于Express的REST API,并且通过Multer启用了文件上传功能。
我的文件上传相关逻辑全部在Multer中处理,我希望保持这种方式。 最近有一个新的文件类型要添加到这个端点(.zip),但我并不想保存它。我希望能够重复使用已经实现的Multer逻辑,但在传递文件给Multer之前加入一个先决步骤,以便它可以像往常一样保存它们并完成流程。
目前我所拥有的:
routes.post(
'/upload',
multer(multerConfig).single('file'),
async (req, res) => {
const { path: filePath } = req.file
const file = xlsx.readFile(filePath)
const cells = Object.values(file.Sheets).reduce((accumulator, sheet) => {
const sheetCellsKeys = Object.keys(sheet)
const sortedCellsKeys = sheetCellsKeys
.sort((previousCell, currentCell) => (
previousCell.localeCompare(currentCell, 'en', { numeric: true })
))
const validCellsKeys = sortedCellsKeys.filter((cellKey) => (
/^[A-Z]+[0-9]+$/.test(cellKey)
))
const grouppedCellsKeys = groupBy(validCellsKeys, (cellKey) => (
cellKey.replace(/\D/g, '')
))
return [
...accumulator,
...Object.values(grouppedCellsKeys)
.reduce((cellsAccumulator, cellsKeys) => ([
...cellsAccumulator,
cellsKeys.map((cellKey) => (
sheet[cellKey].v
)),
]), []),
]
}, [])
res.send(cells)
},
)
我想解压我的zip文件,并将其传递给multer,就像它的内容被发送到/process端点一样。这是否可能?