1.用express生成器生成文件项目 express+文件名+--view=ejs
2.更改文件后缀名:
添加两行代码+更改views文件中的文件后缀名.html
app.engine(“.html”,require(“ejs”).__express);
app.set('view engine', 'html');
3.设置自动重启服务器
"scripts": {
"start": "supervisor ./bin/www"
},
4.在app.js中
4-1.单文件上传:
4-1-1.引入文件
var multer = require('multer');
var fs = require("fs");
4-1-2.设置字段并设置文件存储的位置
app.use(multer({ dest: 'public' }).array('image'));
4-1-3.改文件的名字---添加后缀名
app.get("/upload",(req,res)=>{
res.render})
app.post("/upload",(req,res)=>{
var file = req.files[0];
// multer插件 自动帮你算出一个名称 算法在里面
var oldPath = "public/"+file.filename;
var newPath = "public/"+file.filename +".jpg";
fs.rename(oldPath,newPath,(err,data)=>{
if(err){
console.log("修改名称失败");
res.send("上传成功 修改失败");
}else {
console.log("修改成功");
res.send("上传加修改名称成功");
}
})
}
4-2.多文件上传【res.send不可以输出多次】
在html文件中添加 multiple="true"
4-2-1.同步上传
只需要更改第三步,通过for来循环改变文件名
app.get("/upload",(req ,res)=>{res.render})
app.post("/upload",(req,res)=>{
for(let i=0;i<req.files.length;i++){
var file = req.files[i];
// multer插件 自动帮你算出一个名称 算法在里面
var oldPath = "public/"+file.filename;
var newPath = "public/"+file.filename +".jpg";
var result =fs.renameSync(oldPath,newPath);
if(result==undefined){
if(i==req.files.length-1){
res.send("所有图片上传成功");
}
}else{
res.send("图片上传失败");
}
}
4-2-2.异步上传
for(let i=0;i<req.file.length;i++){
var files = req.files;
function parseFile(){
if(files.length==0){
console.log("上传成功,修改成功");
return;
}
var file=files.shift();
var oldPath = "public/"+file.filename;
var newPath = "public/"+file.filename +".jpg";
var result =fs.rename(oldPath,newPath,(err,data)=>{
if(err){
res.send("上传成功,修改失败")
}else{
parseFile();
}
});
}
parseFile();
}