【how2j nodejs】nodejs 如何通过 express 上传文件

安装模块

创建 package.json 目录

创建 package.json 目录

upload.html

app.js

var express = require('express');
var path = require('path')
var fs = require("fs");
var multer  = require('multer');
  
var app = express();
 
//指定静态文件位置
app.use(express.static(path.join(__dirname, 'public')))
//上传之后放在工作目录下的 tmp 目录下。 上传的时候上传控件的name 必须是  image
app.use(multer({ dest: path.join(__dirname, 'tmp') }).array('image'));
  
//获取后缀名
function getExtName(fileName){
    var index1=fileName.lastIndexOf(".");
    var index2=fileName.length;
    var extName=fileName.substring(index1+1,index2);
    return extName;
}
  
app.post('/uploadPhoto', function (req, res) {
   //获取上传图片的后缀名
   var extName = getExtName(req.files[0].originalname);
     
   //随机数
   var rundomNumber = Math.ceil(Math.random()*10000000);
   //以随机数作为文件名
   var randomFileName =  rundomNumber + "."+extName;
     
   //创建图片目录
   var imgFolder = __dirname + "/public/img/";
   fs.exists(imgFolder, (exists) => {
            if(!exists)
                fs.mkdir(imgFolder, (err) => {
                    console.log(err);
                });
        });
     
   //图片路径
   var imgFile = __dirname + "/public/img/" + randomFileName;
     
   //上传临时文件的路径
   var uploadedTempFilePath = req.files[0].path;
     
   //读取临时文件
   fs.readFile( uploadedTempFilePath, function (err, data) {
       //读取成功之后,复制到图片路径
        fs.writeFile(imgFile, data, function (err) {
            //写成功之后,返回 img元素显示上传之后的图片
              res.writeHead(200, {'Content-Type': 'text/html'});
              res.end("<img src='img/"+randomFileName+"'/>");
       });
   });
})
   
var server = app.listen(8088);

运行并测试

参考链接

express 中文官网
nodejs 中文官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值