fs 模块貌似只能读取本地上的文件。。求大神们帮忙有什么好的办法没有?
简单来说就是实现下载URL文件的功能。。。
我之前认为的方法:
var dstUrl="http://10.0.2.246/monitor/2014-06-14/OUT7010-20140614-1402752806.1466.wav“; var input = fs.createReadStream(dstUrl); var result=''; input.on('data',function(data){ result+=data; }); input.on('close',function(){ res.setHeader('Content-Type', 'audio/x-wav'); res.setHeader("Content-Disposition", "attachment; filename="test.wav"); res.end(result, 'binary'); })
但fs貌似只能读取本地文件
有人 帮我看下吗?
用http.get下载
http.get
参考下这个吧。
var http = require('http'); http.createServer(function (req, res) { var internalReq = http.request({ // 下载资源 - 这里采用的是nodejs自带的http模块。可以考虑使用[request](https://www.npmjs.org/package/request)模块 hostname: '10.0.2.246', port: 80, path: '/monitor/2014-06-14/OUT7010-20140614-1402752806.1466.wav', method: 'GET' }, function(internalRes) { res.setHeader("Content-Disposition", "attachment; filename=test.wav"); // 为了浏览器下载而设置的响应头 res.writeHead(internalRes.statusCode, internalRes.headers); // 将10.0.2.246给我们的响应头也给我们的客户端吧 internalRes.pipe(res); // 将10.0.2.246给我们的响应给我们的客户端 }); internalReq.end(); // 发送下载资源的请求 }).listen(3000, function () { // 我们的客户端监听在3000端口 console.log('server bound'); });
这些做法在[nodejs官网API页面](http://nodejs.org/api/都能看到。
res.download()
res.setHeader("Content-Disposition", "attachment; filename=" + time+'-'+name);
不就是上面这句么。
@JacksonTian 什么意思呢?
@ravenwang .get()方法会直接默认播放该音频文件吧
‘Content-type’ : ‘application/octet-stream’
@GuoZhang 明白了 谢谢啦
@tulayang 你是说用二进制流读取吗?那fs怎么操作?然道还是用
fs.createReadStream(URL); ``` 吗?
@huangzh123 服务器发给客户端’Content-type’ : 'application/octet-stream’响应头,客户端默认就不会打开了。 否则,浏览器会默认“智能”的寻找他自带的解析器来读取流文件。
都不用做什么 ,直接给a标签一个download属性就ok了 简单粗暴的方法!!!
也可以用不直接写链接,然后用res.download的方式做。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
简单来说就是实现下载URL文件的功能。。。
我之前认为的方法:
但fs貌似只能读取本地文件
有人 帮我看下吗?
用
http.get下载参考下这个吧。
这些做法在[nodejs官网API页面](http://nodejs.org/api/都能看到。
res.download()
不就是上面这句么。
@JacksonTian 什么意思呢?
@ravenwang .get()方法会直接默认播放该音频文件吧
‘Content-type’ : ‘application/octet-stream’
@GuoZhang 明白了 谢谢啦
@tulayang 你是说用二进制流读取吗?那fs怎么操作?然道还是用
@huangzh123 服务器发给客户端’Content-type’ : 'application/octet-stream’响应头,客户端默认就不会打开了。 否则,浏览器会默认“智能”的寻找他自带的解析器来读取流文件。
都不用做什么 ,直接给a标签一个download属性就ok了 简单粗暴的方法!!!
也可以用不直接写链接,然后用res.download的方式做。