node實現文件下載

請求頭:referer,響應頭:狀態行、refresh、Content-Disposition、頁面緩存瀏覽器

原理

  • 服務端向客戶端遊覽器發送文件時,若是是瀏覽器支持的文件類型,通常會默認使用瀏覽器打開,好比txt、jpg等,會直接在瀏覽器中顯示。一、將response的header設置爲瀏覽器不支持的文件類型'Content-Disposition': 'attachment; filename=',瀏覽器則不會渲染該內容,而是下載文件。Content-Disposition filename能夠指定路徑和文件名二、content-type設置爲application/octet-stream的話,那就意味着你不想直接顯示內容,而是彈出一個文件下載的對話框,文件名爲當前接口名

實現【注意本身引入相應模塊】

  • 方法一:
let _path = path.resolve(__dirname, 'e-router'+'.js')
  let stats=fs.statSync(_path)
  if(stats.isFile()){
    res.set({
      'Content-Type': 'application/octet-stream',
      'Content-Disposition': 'attachment; filename=' + 'e-router'+'.js',
      'Content-Length': stats.size
    });
    fs.createReadStream(_path).pipe(res);
  }else{
    console.log('導出的不是文件!')
  }
  • 方法二
res.download(_path,function(err){
        if(err){
            console.log(err);
        }
});
相關文章
相關標籤/搜索