文件流下载

第一步 安装依赖

npm install express

npm install cors

第二步 node的index.js文件的代码

import express from 'express'

import cors from 'cors'

import fs from 'fs'

import path from 'path'

const app = express()

app.use(cors())

app.use(express.join())

app.post('/download',(req,res)=>{

    const fileName = req.body.fileName

    const filePath = path.join(process.cwd(),'static',fileName)

    const content = fs.readFileSync(filePath) // 返回是一个二进制流

    res.setHeader('Content-Type':'application/octet-stram') // 二进制流的意思

    res.setHeader('Content-Disposition','attachement;filename='+fileName)//这里是下载

    res.sned(content)


})

app.listen(3000,()=>{console.log('http://localhost:3000')})

第三步 前端的代码:

 

const btn =  document.getElementByid('btn')

btn.addEventListener('click',function(){


    fetch('http://localhost:3000/download',{

        method:'POST',

        body:JSON.stringfy({

            fileName:'1.png'
        }),

        header:{
            
            "Content-Type":"application/json"
        }
    }).then(res=>res.arrayBuffer()).then(res=>{


            // 需要将二进制流转化为Blob

        const blob = new Blob([res],{type:'image/png'}) // 指定类型

        const url = URL.createObjectURL(blob) // 将blob转化为一个url的链接

        //创建a标签 模拟点击下载

        const a = document.createElement('a')

        a.href = url

        a.download = '1.png'

        a.click()

  
    })

})

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值