nodejs 处理zip文件的上传
最近在上传小游戏的资源压缩包及热更新的时候用到了上传zip的问题,在这里记录一下
nodejs处理zip文件的第三方库有很多,这里我使用的是unzip,可以执行如下命令进行安装:
npm install unzip --save
前端我用的是ejs模板:
<!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>ejs上传文件页面</title>
</head>
<body><h1><%=msg%></h1><form action="/upload" method="POST" enctype="multipart/form-data"><!-- application/x-zip-compressed --><input type="file" id="file" name="fileItem" multiple="multiple" value="" accept="application/x-zip-compressed"><input type="submit" value="提交"></form>
</body>
</html>
中间遇到了很多坑,没有form元素的话传到后端获取不到files,接受表单的第三方库是multer
下面是app.js的 具体实现:
const express = require("express");
const ejs = require("ejs");
const multer = require("multer");
const fs = require("fs");
const uzip = require("unzip");
let upload = multer({dest: "upload/"
})
const app = express();
const path = require("path");
app.set("view engine","ejs");
app.use("/remote-assets",express.static(path.join(__dirname + "/public/remote-assets")));
app.get("/upload",(req,res) => {ejs.renderFile("./view/upload.ejs",{msg: "上传文件"},(err,data) => {if(err) {throw err;}console.log("data is ",data);res.send(data);})// res.render("content",)
})
app.post("/upload",upload.single("fileItem"),(req,res) => {// console.log("req is ",req);console.log("file is ",req.file);let file = req.file;let extName = path.extname(file.originalname);let n = path.basename(file.originalname).lastIndexOf(".");let nstr = file.originalname.substring(0,n);let filename = "upload/" + nstr + extName;fs.exists(filename,(exists) => {if(!exists) {return;}// 删除原来的文件fs.unlinkSync(filename);})// 重命名try {fs.rename(file.path,filename,() => {console.log("重命名成功");if(extName === ".zip") {// 开始解压fs.createReadStream(filename).on("error",() => {console.log("解压失败");}).on("close",() => {console.log("关闭");// 删除zip文件fs.unlinkSync(filename);}).pipe(uzip.Extract({path: "upload/" + nstr}));}})} catch(e) {console.log("e is ",e);} finally {}}),
app.listen(8080,() => {console.log("a app is runing on port 8080");
});
nodejs 处理zip文件的上传相关推荐
- 按键精灵curl、FTP、zip、sha1算法、下载文件、上传文件、蓝奏云api、压缩解压文件支持 安卓、IOS
lua插件放到 按键精灵手机助手 安装位置的 Plugin 文件夹里面 注意: 下载后去掉文件后缀.7z 支持安卓,ios ,不需要安装,一个lua插件搞定. 支持multipart/form-da ...
- nodeJs中间件Multer详解_使用express实现本地文件/图片上传到服务器指定目录
最终实现的效果,更改Input的值后,将图片显示出来.输入描述信息,提交后,图片上传到后台对应的路径下. Multer Multer 是一个node.js中间件,用于处理 multipart/form ...
- jquery 分片上传php,php 大文件分片上传
前端部分 上传 //上传控件 uploadBig('upload','zip,rar,7z,tar',{ id: '', type: 'upload_file', } ,(res)=>{ //t ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- FastDFS:Java客户都实现文件的上传、下载、修改、删除
FastDFS:Java客户都实现文件的上传.下载.修改.删除 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...
- 文件的上传和下载---学习笔记
文件上传原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是JSP编程中不能使用FTP方法来上传文件,这是由JSP运行机制所决定的. JSP中上传文 ...
- curl post https_Linux命令cURL详解,并实现文件定时上传到ftp服务器的程序
前言 前段时间群里讨论,想实现某个文件定时上传到服务器要怎么来实现.我记得之前做过 一个项目:为高通的iot模组编写FOTA功能:实现模组可以远程下载升级镜像包,实现版本升级功能.并当时使用的一个超级 ...
- 【转】文件各种上传,离不开的表单
[转]文件各种上传,离不开的表单 [转]文件各种上传,离不开的表单 作为程序员的我们,经常会要用到文件的上传和下载功能.到了需要用的时候,各种查资料.有木有..有木有....为了方便下次使用,这里来做 ...
- php文件断点上传文件,php大文件上传支持断点上传
一个php大文件上传案例,可以支持断点续传,暂不支持文件上传演示 难易:中级 下载资源 下载积分: 200 积分 /** * 配置文件(如果没有默认字样,说明默认值就是注释下的值) * 但是,on*( ...
最新文章
- 在CentOS 6.3 64bit上安装FTP服务器vsftpd 2.2.2
- java中toString的使用
- LeetCode Valid Perfect Square(是否是平方数)
- 把文件夹下的所有文件打包成一个zip包
- 机器学习(四)——SVM(2)
- PHP 文件夹操作「复制、删除、查看大小」递归实现
- 再有人问你MySql 的隔离级别是什么,就把这篇文章发给他!
- Sql Server之旅——第二站 理解万恶的表扫描
- MSSQL 构建函数提取指定的字符
- php 一次性订阅消息,解读一下一次性订阅消息
- am包络检波matlab,matlab实现包络检波
- win10最常用dos命令以及win+R即可运行的命令
- solr自定义分词器
- [转载]2016年高考二轮复习备考文化常识100题及答案详解
- Firefox 浏览器和burp suit 证书配置
- JVM中类加载的时机
- 联想T440怎么把原装Win8或Win10换成Win7系统
- [matlabpython]01——sort排序的相关内容
- (转)函数式编程另类指南
- 一个Fluent动网格问题及解决方法的记录
热门文章
- 动手做一台十分简单的机械按键收音机(RDA5807FP应用实例)
- icon图标网站 自用 免费
- 为什么时钟都用32.768K的晶振?2的15次方
- 宾夕法尼亚的第一台计算机,宾夕法尼亚大学博士申请 - 世界上第一台计算机诞生与美国宾夕法尼亚大学,这台计算机是什么,只能算数字吗?(也就是几加几几乘几什...
- android自定义相册图片和视频教程,android把图片 视频 保存到相册
- 【操作系统】IO管理
- 趣头条递交招股书:最高融资3亿美元 挖掘下沉人群市场
- 转载:与吸烟者共同生活的人,患肺…
- vs+Qt+opencv+大恒相机开发(基础功能,适合初学者学习)
- 51单片机串口通讯c语言程序,如何使用51单片机实现串口通信