Expressjs框架具有sendfile()方法。我如何在不使用整个框架的情况下做到这一点。我正在使用node-native-
zip创建档案,并将其发送给用户。
这是一个示例程序,它将通过从磁盘流式传输myfile.mp3来发送myfile.mp3(也就是说,在发送文件之前,它不会将整个文件读入内存)。服务器在端口2000上侦听。
[更新] 正如@Aftershock在评论中所提到的,util.pump
它消失了,并被Stream原型上的一种称为pipe
;
的方法所取代。下面的代码反映了这一点。
var http = require('http'),
fileSystem = require('fs'),
path = require('path');
http.createServer(function(request, response) {
var filePath = path.join(__dirname, 'myfile.mp3');
var stat = fileSystem.statSync(filePath);
response.writeHead(200, {
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size
});
var readStream = fileSystem.createReadStream(filePath);
// We replaced all the event handlers with a simple call to readStream.pipe()
readStream.pipe(response);
})
.listen(2000);
取自http://elegantcode.com/2011/04/06/taking-baby-steps-with-node-js-pumping-
data-between-streams/
Expressjs框架有一个方法。如果不使用整个框架,我怎么能做到这一点? 我正在使用node-native-zip创建一个归档文件,并希望将其发送给用户。
问题内容: 我在Google上搜索了此内容,但找不到答案,但这一定是一个常见问题。这是与Node request读取图像流-通过管道返回响)相同的问题,尚未得到答复。 如何发送图像文件作为Express .send()响应?我需要将RESTful网址映射到图片-但是如何发送带有正确标题的二进制文件?例如, 通话中… 问题答案: Express中有一个api。 http://expressjs.co
问题内容: 上下文:具有Express的多层Node.js应用程序。前端托管为Azure网站,后端数据来自Parse。 我有一个GET端点,并且希望用户体验是文件下载。如果文件与前端位于同一服务器上,则可以使用 但是,该文件由我的后端托管在另一台服务器上,而我的前端只知道URL。所以我目前正在做: 这导致浏览器导航到资产文件URL(视频),并显示在浏览器中。我想知道的是: 如何让浏览器下载该文件,
问题内容: 我创建了基本的http服务器,该服务器发送html文件作为响应。我如何也发送CSS文件,以便使用浏览器的客户端将看到使用CSS的HTML? 我有的代码: 我试过的(似乎不起作用-客户端在这里只能看到CSS文件内容): html文件: CSS文件: 我不想在这里使用express(仅用于学习目的) 问题答案: 您在第一个代码段中编写的是一个Web服务器,该Web服务器使用HTML文件的主
问题内容: 我的要求是使用HTTP Servlet将PDF数据响应到移动客户端(iPhone)。 我是按照以下方式完成的,但是我没有在客户端获得预期的输出。 我遵循的方法正确吗?请指教。 谢谢。 问题答案: 您必须使用ServletOutputStream及其write()方法将字节写入response。
问题内容: 您好,我一直在尝试将文件从node.js发送到客户端。 我的代码有效,但是当客户端转到指定的url()时,它将流式传输文件。 从Google Chrome浏览器访问该文件可使文件(.mp3)在播放器中播放。 我的目标是让客户的浏览器下载文件,然后问客户他想在哪里存储文件,而不是在网站上流式传输。 问题答案: 您需要设置一些标题标志。 用下载代替流媒体;