express上传图片

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();                                                                                                                                        
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容