美文网首页工作生活
使用multer文件node.js文件上传功能

使用multer文件node.js文件上传功能

作者: Tme_2439 | 来源:发表于2019-07-03 18:22 被阅读0次
了解一下form表单的enctype属性

application/x-www-form-urlencoded (默认)
multipart/form-data(上传文件必须要设置)
text/plain(一般不用)

使用 multer 模块:npm install multer --save

在需要上传文件的路由文件中,引入multer模块,并配置一个临时存放目录:

// 使用multer处理文件上传,upload 方法返回中间件函数
let multer = require('multer')
let upload = multer({
    dest: 'D:\Users\chaoszhu\Desktop\temp'
})

upload三个常用的方法:
-upload.single('字段名') //前端传递过来的那个input框的名字,只能上传一个文件
-upload.array('字段名', maxCount) // 上传多个文件,maxCount限制数量
-upload.fileds([{name: '字段名',maxCount:2},{name: '字段名',maxCount:2},······])

multer处理之后会在req对象上加入了req.file || req.files || req.body三个属性

在路由函数中使用:

// fileName 为formData对象的key值,value即是文件
router.post('/register', upload.single('fileName') , (req, res) => {
    console.log(req.file)
    let fileName = new Date().getTime() + '-' + req.file.originalname   // 获取文件名称
    let filePath = path.resolve(__dirname, '../../public/avatar', fileName) // 获取将要存入文件的绝对路径
    let fileData = fs.readFileSync(req.file.path) //获取文件数据
    fs.writeFileSync(filePath, fileData) //写文件(保存文件)
}

想要访问到保存的文件,需要配置一下express的静态资源托管

// 静态资源托管,用于直接访问保存在静态文件夹的public目录中的文件
app.use(express.static(path.resolve('public')))

输入:http://localhost:8000/public/avatar/xxxx 即可访问

相关文章

网友评论

    本文标题:使用multer文件node.js文件上传功能

    本文链接:https://www.haomeiwen.com/subject/mcuchctx.html