Express下使用formidable实现POST表单上传文件并保存
2024-08-28 16:04:56
Express下使用formidable实现POST表单上传文件并保存
在上一篇文章中使用formidable
实现了上传文件,但没将它保存下来。
一开始,我也以为是只得到了文件的相关信息,需要用fs.writefile
模块写文件,但事实上,formidable
已经帮我们做了这件事!
从官方文档中,就可以看到,formidable
有一个uploadDIr
的属性,它有一个默认属性是系统的临时文件夹。因此它默认就上传保存到了系统的默认目录下,有心的话,我们可以到用户目录下看临时文件夹temp
下就可以看到上传的那些图片。
为了让它上传到项目目录下,你需要做的只是修改这个uploadDir
属性!如下代码:
PUG页面代码
doctype html
html
form(action="/ex_post" method="POST" enctype="multipart/form-data")
label(for="fieldName") 名字:
input(type="text" id="fieldName" name="name")
label(for="fieldEmail") 邮箱:
input(type="email" id="fieldEmail" name="email")
input(type="file" name="avatar")
input(type="submit" value="提交")
Express 代码实现
const express = require("express")
const bodyParser = require("body-parser")
// 解析带文件上传的表单需要
const formidable = require("formidable")
const path = require("path")
const app = express()
let port = process.env.port || 3000
app.use(express.static(path.join(__dirname, "/public")))
app.set("view engine", "pug")
app.use(bodyParser.urlencoded({ extended: true }))
app.get("/", (req, res) => {
res.render("post",{})
})
app.post("/ex_post", (req, res) => {
var form = new formidable.IncomingForm()
form.uploadDir = "./public/img" // 上传目录
form.keepExtensions = true
form.parse(req, function(err, fields, files) {
if (err) return res.redirect(303, '/error')
let response = {
fields,
files,
msg: `成功上传至${uploadDir}`
}
res.send(response)
})
})
app.listen(3000, () => {
console.log(`running on port: ${port}`)
})
最后,你可以在public/img目录下发现刚上传的文件。
最新文章
- 自定义制作iso镜像
- fir.im Weekly - 从零开始创建 Android 新项目
- 【转载】 python修饰符@
- mysql 语句执行顺序问题
- Java正则表达式, 提取双引号中间的部分
- c++ 模运算
- 《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步
- Linux svn一次增加多个文件并批量上传
- Entity Framework with MySQL 学习笔记一(insert,update,delete)
- WPF学习:绑定
- STM32F446 OTG_FS_DP/DM调试
- SQL 查询时间段内的时间
- selenium python自动化测试 ddt数据驱动
- arm swi 软中断 一例
- ELK学习总结(2-2)单模式CRUD操作
- 【转】META标签指南:哪些meta标签该用哪些不该用?
- 关于安装SVN Service 出错 Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details
- 对于over-posting的防御
- L161
- Linux网络配置之虚拟网卡的配置(Red Hat 6.5)
热门文章
- [Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素
- SqlServer中临时表的应用
- Ajax缓存问题怎么解决?
- iOS 控制台打印unicode 转中文汉字 UTF8String
- iOS 快速框架搭建项目
- jquery教程-Jquery 获取标签个数 size()函数用法
- 图论:费用流-SPFA+EK
- 【BZOJ】1692: [Usaco2007 Dec]队列变换
- 【CodeForces】841D. Leha and another game about graph(Codeforces Round #429 (Div. 2))
- python—用for循环、while循环和一句话打印九九乘法表