使用 nodejs 进行 post请求 上传文件 下载文件 删除文件 功能 废话少说 直接上代码 cp就能使用
首先是文件上传功能
router.post('/pushFile',upload.single('test'),(req,res)=>{
if(req.body.resourcesid!=undefined && req.body.resourcesid!=""&&req.file!=undefined && req.file.originalname!=undefined){
var originalname = confirmEnding(req.file.originalname);
if(originalname.indexOf("sh") !=-1 || originalname.indexOf("php") !=-1){
return res.send({err:0,msg:'上传失败 非法上传'})
}else{
var filename = new Date().getTime()+req.file.originalname
if(filename.indexOf("/")!=-1||filename.indexOf("\\")!=-1||filename.indexOf(">")!=-1||filename.indexOf("<")!=-1){
return res.send({"code":400,"msg":"删除失败,文件地址有误 不能包含特殊字符,可为全数字或全字母或中文"})
}else{
try {
const absPath = path.resolve("/", "/file");
fs.stat(absPath, function (err, stats) {
if (!stats) {
fs.mkdir(absPath, {recursive: true}, err => {
if (err) throw err;
try {
fs.readFile(req.file.path,(err,data)=>{
//如果读取失败
if(err){return res.send('上传失败')}
//3.回调函数
fs.writeFile(path.join("/",'/file/'+filename),data,(err)=>{
if(err){return res.send('写入失败')}
return res.send({err:0,msg:'上传ok'})
});
});
} catch (error) {
return res.send({err:0,msg:'上传失败 上传文件出现异常'})
}
}); //Create dir in case not found
}else{
try {
fs.readFile(req.file.path,(err,data)=>{
//如果读取失败
if(err){return res.send('上传失败')}
//3.回调函数
fs.writeFile(path.join("/",'/file/'+filename),data,(err)=>{
if(err){return res.send('写入失败')}
filController.save(
{
"filename":filename,
"resourcesid":req.body.resourcesid==undefined?"":req.body.resourcesid,
"filetype":originalname,
"fileSize":req.file.fileSize,
"fileAccount":req.session.curUser.account,
"msg":req.body.msg==undefined?"":req.body.msg
},function(err,data){
});
return res.send({err:0,msg:'上传ok'})
});
});
} catch (error) {
return res.send({err:0,msg:'上传失败 上传文件出现异常'})
}
}
});
} catch (error) {
}
}
}
}else{
return res.send({err:0,msg:'上传失败 资源id不能为空或传入文件包含非法请求'})
}
})
文件下载功能
router.post('/getdownFile',(req,res)=>{
if(req.body!=undefined && req.body.filename !=undefined){
try {
var name = req.body.filename;// 待下载的文件名 \
if(name.indexOf("/")!=-1||name.indexOf("\\")!=-1||name.indexOf(">")!=-1||name.indexOf("<")!=-1){
return res.send({"code":400,"msg":"删除失败,文件地址有误 不能包含特殊字符,可为全数字或全字母或中文"})
}else{
var path = "/file" + "/" + name;// 待下载文件的路径,指定为当前项目目录下的hello.txt文件
if(name!=undefined){
if (isFileExist(path)) {
try {
var f = fs.createReadStream(path);
const fileName = encodeURIComponent(name)
res.writeHead(200, {
'Content-Type': 'application/force-download',
'Content-Disposition': 'attachment; filename=' + fileName
});
f.pipe(res);
} catch (error) {
return res.send({"code":400,"msg":"下载失败"})
}
}else{
return res.send({"code":400,"msg":"下载失败"})
}
}else{
return res.send({"code":400,"msg":"下载失败"})
}
}
} catch (error) {
return res.send({"code":400,"msg":"下载失败"})
}
}else{
return res.send({"code":400,"msg":"下载失败"})
}
})
文件删除功能
router.post('/delgetdownFile',(req,res)=>{
if(req.body!=undefined && req.body.filename !=undefined&& req.body.id!=undefined){
try {
var name = req.body.filename;// 待下载的文件名 \
if(name.indexOf("/")!=-1||name.indexOf("\\")!=-1||name.indexOf(">")!=-1||name.indexOf("<")!=-1){
return res.send({"code":400,"msg":"删除失败,文件地址有误 不能包含特殊字符,可为全数字或全字母或中文"})
}else{
var path = "/file" + "/" + name;// 待下载文件的路径,指定为当前项目目录下的hello.txt文件
if(name!=undefined){
fs.unlink(path,function(error){
if(error){
console.log(error);
return res.send({"code":400,"msg":"删除失败"})
}
return res.send({"code":400,"msg":"删除文件成功"})
})
}else{
return res.send({"code":400,"msg":"删除失败"})
}
}
} catch (error) {
return res.send({"code":400,"msg":"删除失败"})
}
}else{
return res.send({"code":400,"msg":"删除失败"})
}
})
到这里就完成啦 如果有同学或打工人有不明白的地方 可以提问我哦
对您有帮助的话 记得点赞 收藏 加关注呀 !! 谢谢啦