nodejs+express4实现文件上传下载删除和列表展示功能
0.效果展示

1.创建项目
创建文件夹:express_file_upload
npm init
# 入口文件选择server.js
- 安装插件
npm install express
npm install nodemon -g
npm install body-parser multer
npm install ejs
参考资料
2.上传文件
上传页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>文件上传</title>
</head>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
<body>
</body>
</html>
路由
// 上传页面
router.get('/', (req, res)=>{
console.log(__dirname)
res.sendFile(path.join(__dirname,'../views/upload.html'))
}) // 上传文件
router.post('/upload', upload.single('file'), function(req, res) {
console.dir(req.files) if (!req.file || Object.keys(req.file).length === 0) {
res.status(400).send('请选择要上传的文件!');
return;
} // res.send('Success.');
// 重定向到列表页
res.redirect('/filelist')
});
3.文件列表
列表展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>文件列表</title>
</head>
<body>
<h4>文件列表</h4>
<ul id="filelist"></ul> <script src="/static/jquery.js"></script>
<script>
$(function(){
init();
}) function init(){
$.ajax({
type: 'GET',
url:'/getFileList',
success: function(data){
console.log(data)
$.each(data, function(index,item){
$("#filelist").append("<li><a href='/download?path="+item.path+"'>"+
item.name+"</a> "+getFileSize(item.size)+
" <button οnclick='deleteFile(\""+item.path+"\")'>删除</button></li>");
}) }
})
} function getFileSize(size){
if(size < 1024){
return size+'KB'
}else if(size >= 1024&&size<Math.pow(1024, 3)){
return (size/1024.0/1024).toFixed(2)+'MB'
}else{
return (size/1024.0/1024/1024).toFixed(2)+'GB'
} } function deleteFile(path){
var param={"path": path};
console.log(path)
if (confirm('确定删除?')){
$.ajax({
type: 'POST',
url:'/delete?path='+path,
data: JSON.stringify(param),
success: function(data){
window.location.reload();
}
})
} return false; } </script>
</body>
</html>
路由
// 列表页面
router.get('/filelist',function(req, res){
res.sendFile(path.join(__dirname,'../views/filelist.html'))
}) // 获取文件列表
router.get('/getFileList',function(req, res, next){
var filelist = getFileList('upload')
res.send(filelist)
}) function getFileList(path){
var filelist = [];
readFile(path, filelist); return filelist;
} function readFile(path, filelist){
var files = fs.readdirSync(path);
files.forEach(walk); function walk(file)
{
var state = fs.statSync(path+'/'+file)
if(state.isDirectory()){
readFile(path+'/'+file, filelist)
}else{
var obj = new Object;
obj.size = state.size;
obj.name = file;
obj.path = path+'/'+file;
filelist.push(obj);
}
}
}
4.下载文件
// 下载文件
router.get('/download',function(req,res){
var filePath = req.query.path;
console.log('下载文件:'+filePath)
filePath = path.join(__dirname,'../'+filePath);
res.attachment(filePath)
res.sendFile(filePath)
})
5.删除文件
// 删除文件
router.post('/delete', function(req, res, next){
var filePath = req.query.path;
console.log('删除文件:'+filePath)
try {
fs.unlinkSync(filePath)
// 重定向到列表页
res.send('删除成功')
} catch (error) {
res.send('删除失败')
}
})
源码地址
https://gitee.com/indexman/express_file_upload
路过的给老徐点个赞加个关注收藏:)
nodejs+express4实现文件上传下载删除和列表展示功能的更多相关文章
- nodejs+express-实现文件上传下载管理的网站
Nodejs+Express-实现文件上传下载管理的网站 项目Github地址(对你有帮助记得给星哟):https://github.com/qcer/updo 后端:基于nodejs的express ...
- SpringMVC ajax技术无刷新文件上传下载删除示例
参考 Spring MVC中上传文件实例 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传 Spring MVC 文件上传下载 (FileOperateUtil.ja ...
- Struts2 文件上传,下载,删除
本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用Fi ...
- java操作FTP,实现文件上传下载删除操作
上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...
- [java]文件上传下载删除与图片预览
图片预览 @GetMapping("/image") @ResponseBody public Result image(@RequestParam("imageName ...
- Java 客户端操作 FastDFS 实现文件上传下载替换删除
FastDFS 的作者余庆先生已经为我们开发好了 Java 对应的 SDK.这里需要解释一下:作者余庆并没有及时更新最新的 Java SDK 至 Maven 中央仓库,目前中央仓库最新版仍旧是 1.2 ...
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...
- 【FTP】FTP文件上传下载-支持断点续传
Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...
- FastDFS实现文件上传下载实战
正好,淘淘商城讲这一块的时候,我又想起来当时老徐让我写过一个关于实现FastDFS实现文件上传下载的使用文档,当时结合我们的ITOO的视频系统和毕业论文系统,整理了一下,有根据网上查到的知识,总结了一 ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
随机推荐
- [转帖]PD 配置文件描述
https://docs.pingcap.com/zh/tidb/stable/pd-configuration-file PD 配置文件比命令行参数支持更多的选项.你可以在 conf/config. ...
- [转帖]Tiup 常用运维操作命令干货
https://zhuanlan.zhihu.com/p/356031031 **导读**> 作者:杨漆> 16年关系型数据库管理,从oracle 9i .10g.11g.12c到Mysq ...
- [转帖]jmeter 响应时间rt很小,但是tps也很小&jmeter,脚本处理,千万不要用js
一.背景: 在压测的时候,查看jmeter聚合报告,发现rt很小,但是tps也很小. 讲道理来说,响应时间越小,tps应该越大. 一共压测10分钟,发现jmeter请求的样本数量非常小,才8500个请 ...
- [转帖]比 Python 快 35000 倍!LLVM&Swift 之父宣布全新编程语言 Mojo:编程被颠覆了
https://www.infoq.cn/article/GFfVLVpkIGOcKYB85Opb "Mojo 可能是近几十年来最大的编程语言进步." 近日,由 LLVM 和 Sw ...
- [转帖]总结:Tomcat的IO模型
一.介绍 对于 linux 操作系统,IO 多路复用使用的是 epoll 方式,对于 windows 操作系统中 IO 多路复用使用的是 iocp 方式,对于 mac 操作系统 IO 多路复用使用的是 ...
- [转帖]JAVA⽣态的微服务⽆侵⼊链路追踪
https://v5.6-docs.rainbond.com/docs/v5.3/advanced-scenarios/devops/pinpoint/#pinpoint%E7%AE%80%E4%BB ...
- 简单的获取ESXi服务器上面开启了多少个vCPU的办法
开启ssh 执行命令 esxcli vm process list |grep Config |cut -b 17- |xargs cat |grep numvcpus |cut -d " ...
- vue面试题(一)正在重新整理
1.输入一个 URL到浏览器整个过程发生了什么?ok 1.浏览器查找当前 URL是否存有缓存,并检查这个缓存是否过期 2.DNS 解析 URL 对应的 IP 3.根据 IP 建立 TCP 连接(三次握 ...
- fasthttp 中如何使用`Transfer-Encoding: chunked` 方式的流式内容输出
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 具体的思路是这样:通过 RequestCtx 的 Conn ...
- 从零开始配置 vim(5)——本地设置与全局设置
在前面的一系列文章中,我们介绍了使用 :noremap 进行键盘映射,使用 set 来设置选项和 vim 的变量.并且已经在配置文件中对他们进行了相关配置. 在介绍设置那一篇文章中我们提到了,lua ...