Node.js 如何在nodejs中保存通过api上传的文件
我想保存用户上传的文件。之前我使用的是Node.js 如何在nodejs中保存通过api上传的文件,node.js,express,multer,Node.js,Express,Multer,我想保存用户上传的文件。之前我使用的是multer,但是我想运行一些验证,因此在本例中,我的multer不起作用。这里我想使用fs.write保存输出,如果验证通过了,但我的数据是作为缓冲区来的,我不知道如何保存它 const express = require('express'); const app = express(); const multer = require('multer'); const fs = require('fs'); const router = express
multer
,但是我想运行一些验证,因此在本例中,我的multer
不起作用。这里我想使用fs.write
保存输出,如果验证通过了,但我的数据是作为缓冲区来的,我不知道如何保存它
const express = require('express');
const app = express();
const multer = require('multer');
const fs = require('fs');
const router = express.Router();
const uploadExcel = require('./excelMiddleware');
const multerS = multer();
router.post('/upload', multer.single('file'), uploadExcel, (req, res) => {
fs.write('/path/to/file') // want to write here
res.send('<h1>file uploaded</h1>')
})
router.get('*', (req, res) => {
res.send('<h1>Page not found</h1>')
})
app.use(router);
app.listen(8000, ()=> {
console.log('Server stared')
})
假设您正在写入服务器上的文件。 为此,您需要
fs.writeFile()
文档:
router.post('/upload',multer.single('file'),uploadExcel,(req,res)=>{
//req.file.file是内存中上载的文件
fs.writeFile('/path/to/file',req.file.file.buffer,(err)=>{
如果(错误){
log('do something with err',err)
//可能会抛出错误
}
//文件已成功上载
res.send('文件已上载')
})
})
假设您正在写入服务器上的文件。
为此,您需要fs.writeFile()
文档:
router.post('/upload',multer.single('file'),uploadExcel,(req,res)=>{
//req.file.file是内存中上载的文件
fs.writeFile('/path/to/file',req.file.file.buffer,(err)=>{
如果(错误){
log('do something with err',err)
//可能会抛出错误
}
//文件已成功上载
res.send('文件已上载')
})
})
use可以尝试此操作。我还没有检查它是否工作。这只是一个建议<代码>变量流=fs.createWriteStream('filename');流写入(缓冲区);stream.end()代码>multer具有验证。你检查文件了吗?例如:@HaroonKhan它没有在文件筛选器中提供缓冲区,因此可以尝试此方法。我还没有检查它是否工作。这只是一个建议<代码>变量流=fs.createWriteStream('filename');流写入(缓冲区);stream.end()代码>multer具有验证。你检查文件了吗?例如:@HaroonKhan它不会在文件筛选器中提供缓冲区
const XLSX = require('xlsx');
const { CONTACT } = require('./column.config');
const _ = require('lodash');
const uploadExcel = (req, res, next) => {
try{
const columnMapper = CONTACT;
const workbook = XLSX.read(req.file.buffer, {type:'buffer'});
const sheetName = workbook.SheetNames;
const excelJson = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName[0]]);
if(!excelJson.length) {
throw Error("Blank sheet");
}
const columnCheck = Object.keys(excelJson[0]);
const isColumnEqual = _.isEqual(columnMapper, columnCheck);
if(!isColumnEqual){
throw Error("Blank sheet");
}
next();
}
catch(e){
console.log(e)
return res.status(400).send({error:e.message});
}
}
module.exports = uploadExcel;
router.post('/upload', multer.single('file'), uploadExcel, (req, res) => {
// req.file.file is the uploaded file in memory
fs.writeFile('/path/to/file', req.file.file.buffer, (err) => {
if (err) {
console.log('do something with err', err)
// throw error maybe
}
// file was uploaded successfully
res.send('<h1>file uploaded</h1>')
})
})