nodejs实现文件下载功能,防止文本TXT类文件直接打开
2017-11-09 10:46
1396 查看
nodejs实现文件下载功能,防止文本TXT类文件直接打开
当直接访问的某个文件时,如果该文件是二进制等浏览器无法解析的文件,浏览器才会下载该文件,但如果浏览器可以自己解析该文件,则它会打开该文件并以自己的方式呈现出来,而不会下载,此时就需要设置消息响应头,告诉浏览器该文件需要下载而不是简单的打开。实现方法如下,访问:http://localhost:3000/download?fileType=1&fileName=test.txt
说明:下载文件必须放在public目录下
方法一:
在app.js文件中加入以下代码
app.use('/download', index);
index.js文件
var express = require('express'); var router = express.Router(); var path = require('path'); var fs = require('fs'); /* GET home page. */ router.get('/', function(req, res, next) { var fileType = req.query.fileType; var fileName = req.query.fileName; if (fileType == 1) { //直接访问文件进行下载 res.redirect(fileName); } else if (fileType == 2) { //以文件流的形式下载文件 var filePath = path.join(__dirname, '../public/' + fileName); var stats = fs.statSync(filePath); var isFile = stats.isFile(); if(isFile){ res.set({ 'Content-Type': 'application/octet-stream', 'Content-Disposition': 'attachment; filename=' + fileName, 'Content-Length': stats.size }); fs.createReadStream(filePath).pipe(res); } else { res.end(404); } } else { res.end(404); } }); module.exports = router;
方法二:
使用res.download()来下载,这种方法比较简便,但其本质上和方法一中以文件流形式下载文件的原理是一样的,所以对于大文件,可能体验效果不佳。
var express = require('express'); var router = express.Router(); router.all('/', function(req, res, next) { var fileType = req.query.fileType; var fileName = req.query.fileName; var fullPath = 'public/' + fileName; res.download(fullPath); }); module.exports = router;
相关文章推荐
- nodejs实现文件下载功能,防止文本TXT类文件直接打开
- php -- PHP实现点击a标签的href做链接时,直接保存文件(任何类型),而不是通过浏览器直接打开下载的文件
- 用jsp实现直接下载文件的功能
- java实现文件下载功能-----直接上图片
- java防止浏览器直接打开下载的文件
- (98)Menu简单文本编辑器实现功能:文件打开,保存,退出
- android webview页面中的文件(apk,mp3或mp4,以及文本等)链接,选择被打开还是直接下载
- 在java的WEB项目如何防止浏览器直接打开下载的文件
- java防止浏览器直接打开下载的文件
- ASP实现不打开直接下载txt,jpg...类文件
- html中实现添加水印的功能 / 在jsp页面上直接打开PDF文件
- 防止用户直接输入地址下载资源文件(java实现)
- 实现文件页面不打开,直接下载
- Java防止浏览器直接打开下载的文件
- web项目下载TXT文件防止浏览器直接打开
- Java防止浏览器直接打开下载的文件
- jsp 实现文件下载到客户端并可直接打开或保存
- 用jsp实现直接下载文件的功能
- ionic实现下载文件并打开功能(file-transfer和file-opener2插件)
- tomcat实现文件打开下载功能