NodeJS使用formidable实现文件上传

前端之家收集整理的这篇文章主要介绍了NodeJS使用formidable实现文件上传前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近自学了一下NodeJS,然后做了一个小demo,实现歌曲的添加修改、播放和删除功能,其中自然要实现音乐和图片上传功能。于是上网查找资料,找到了一个formidable插件,该插件可以很好的实现文件上传功能。该小demo用到了MysqL数据库,所有的数据都存放到了数据库中。下面简单说一些如何使用。

1.创建app.js主文件

const app = express();

//静态资源服务
app.use('/uploads',express.static(path.join(__dirname,'uploads')));
app.use('/node_modules','node_modules')));

//配置模板引擎
app.set('views',path.join(__dirname,'views'));
app.engine('.html',require('ejs').renderFile);
app.set('view engine','html');

//配置解析普通表单post请求体
app.use(bodyParser.urlencoded({extended:false}));

//加载路由系统
app.use(router);

app.listen(3000,'127.0.0.1',() => {
console.log('server is running at port 3000.');
})

2.html文件中的form表单

add.html文件

标题 标题">
名称">
dio/*">

上传的音乐文件.

上传的音乐海报.

注意:method="post" enctype="multipart/form-data"

3.创建路由router.js文件

router
.get('/',handler.showIndex)
.get('/musicList',handler.getMusicList)
.get('/add',handler.showAdd)
.post('/add',handler.doAdd)
.get('/edit',handler.showEdit)
.post('/edit',handler.doEdit)
.get('/remove',handler.doRemove)

module.exports = router;

  注意:router.js文件中的依赖不用多说。

4.创建handler.js文件

{ const form = new formidable.IncomingForm(); form.uploadDir = config.uploadDir;//上传文件的保存路径 form.keepExtensions = true;//保存扩展名 form.maxFieldsSize = 20 * 1024 * 1024;//上传文件的最大大小 form.parse(req,(err,fields,files) => { if (err) { throw err; } const title = fields.title; const singer = fields.singer; const music = path.basename(files.music.path); const img = path.basename(files.img.path); db.query('INSERT INTO music (title,singer,music,img) VALUES (?,?,?)',[ title,img ],rows) => { if (err) { throw err; } res.redirect('/'); }) }) };

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

原文链接:https://www.f2er.com/nodejs/44865.html

猜你在找的Node.js相关文章