基于NodeJS+Express实现文件上传下载

文件上传

//先引入multer
var multer = require('multer');
var upload = multer();
//从upload中获取文件

router.post('/rel', upload.fields([{name: 'inputFile', maxCount: 1}]),function(req,res,next){
     var inputFiles = req.files; //未传时为undefined
     ...
     //读取文件内容
     var content = inputFiles['inputFile'][0].buffer.toString();

})

表单:

<form method="POST" action="/apps/rel" encType="multipart/form-data" name="form"> 
    <input id="inputFile" type="file" accept="application/vnd.ms-excel|xls" 
        name="inputFile" onChange={this.handleFileChange}/> 
    <button onClick={this.handleSubmit}>点击提交</button> 
</form>

 

文件下载

router.get('/export',(req,res,next)=>{
    //查询数据库
    ...
    let realPath = path.join(TMP_PATH, fileName);
    let writeStream = fs.createWriteStream(realPath);
    // 解决Excel打开时出现中文乱码
    let bom = new Buffer('\xEF\xBB\xBF', 'binary');
    writeStream.write(bom);
    //写入数据内容
    ...

    writeStream.end();
    writeStream.on('finish', ()=> {
        res.download(realPath, outName, (err)=> {
            fs.unlink(realPath, (err2)=> {
                if (err2) {
                    logger.error('删除文件失败,err=' + err);
                }

            });
            if (err) {
                logger.error(err);
                res.status(404).end();
            }

        });
    });
})
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值