koa 實現下載文件


文件下載需要使用到koa-send這個插件,該插件是一個靜態文件服務的中間件,它可以用來實現文件下載的功能。

1.下載頁面

static/download.html

<!DOCTYPE html>
<html>

<head>
  <meta charset=utf-8>
  <title>文件下載演示</title>
</head>

<body>

  <div>
    <button onclick="fileLoad()">文件下載</button>
    <iframe name="iframeId" style="display:none"></iframe>
  </div>
  <script type="text/javascript">
    function fileLoad() {
      window.open('/static/upload/pro_03.jpg', 'iframeId');
    }
  </script>
</body>

</html>

2.app.js 所有的代碼改成如下:

// 引入模塊
const Koa = require('koa');
const fs = require('fs');
const path = require('path');
const router = require('koa-router')();
const koaBody = require('koa-body');
const static = require('koa-static');
const send = require('koa-send');

// 實例化
const app = new Koa();

app.use(koaBody());

router.get('/', (ctx) => {
  // 設置頭類型, 如果不設置,會直接下載該頁面
  ctx.type = 'html';
  // 讀取文件
  const pathUrl = path.join(__dirname, '/static/download.html');
  ctx.body = fs.createReadStream(pathUrl);
});

router.get('/fileload/:name', async (ctx) => {
  const name = ctx.params.name;
  const path = `static/upload/${name}`;
  ctx.attachment(path);
  await send(ctx, path);
});

// 配置靜態資源路徑
app.use(static(path.join(__dirname)));

// 啟動路由
app.use(router.routes()).use(router.allowedMethods());

// 監聽端口號
app.listen(3001, () => {
  console.log('server is listen in 3001');
});

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM